异步 JavaScript

异步只是意味着函数不会阻止脚本其余部分的执行。
如果我们有 PHP 背景,那么一开始这可能会非常令人困惑,因为没有任何内容表明 HTTP 请求没有返回任何内容。

问题是,脚本下方将有一些代码依赖于返回的 HTTP 请求的结果,但由于该函数是非阻塞的,脚本的其余部分将在 HTTP 请求函数返回之前执行。
解决这个问题的一种方法是接受函数的异步特性,而不是与之抗争。

为了解决这个问题,我们可以使用一个“回调”函数。
回调函数只是在 HTTP 请求的结果返回或者下载时调用的函数。
但是请注意,我们需要继续在回调函数中工作,而不是返回到组合 root 。
这可能如下所示:

httpClient = new http_client();
httpClient.get("/request_handler.php", callback);
function callback(response) {
  //Do stuff here
  alert(response);
}

我花了很长时间才弄清楚这一点。
所以,我们在 PHP 中的做法在 JavaScript 中实际上是错误的:

//"Wrong" way to do it
httpClient = new http_client();
response = httpClient.get("/request_handler.php");
alert(response);

这被一些人称为回调地狱。

上面的例子使用的 HTTP Client,它是一个用于发送 HTTP 请求的 JavaScript 类。

用纯 JavaScript 编写自己的 AJAX 函数是一种很好的做法,但在生产中,使用包含的库或者类通常更好,因为它可能会增加与浏览器的兼容性。

什么是Ajax?

Ajax 代表异步 JavaScript 和 XML,它只是 JavaScript 中用于创建网站或者 Web 应用程序的一种技术,它从服务器异步加载和发送数据。

AJAX 可用于在后台以静默方式向服务器发送 HTTP 请求。
服务器通常通过结束 200 ok 响应代码和响应正文来响应这些请求。

响应的正文部分通常只是普通的 HTML 或者 XML,然后可以通过 JavaScript 的 innerHTML 属性直接插入。
但是,许多现代应用程序现在使用 JSON 对象作为响应。
使用 JavaScript 中的内置函数可以轻松地将 JSON 对象协调为数组。

httpClient = new http_client();
httpClient.get("/request_handler.php", callback);
function callback(response) {
  //Do stuff here
  alert(response);
}
日期:2020-06-02 22:17:21 来源:oir作者:oir