是带有successcallback的$ajax()调用,实际上是异步的
is $ajax() call with a successcallback really asynchronous
我现在有点困惑。我有下面的异步ajax调用,其中我正在传递一个成功回调。
ajax('PUT', 'some URL', successCallback, data);
我观察到这个回调是在请求完成时调用的,所以如果等待调用完成,我无法理解这个调用是如何异步的。
如果我不将successcallback传递给ajax并从函数返回回调,我可以观察到预期的异步行为
ajax('PUT', 'some URL', undefined, data);
return successcallback();
通过以上更改,我实际上观察到ajax调用异步执行,我的页面可以继续,但如果页面重定向到其他链接,请求就会被取消。因此,唯一有效的选项是为ajax传入successCallback,但它似乎是同步的,而不是异步
我认为您的术语已经过时了。在此上下文中,"异步"意味着"在未来某个时间点运行,不会阻止代码的立即执行"。"同步"是一个阻塞调用,它将停止执行,直到执行完成。
那里的回调是在请求完成时执行的,根据定义,这是"异步"的。不管怎样,您的备用版本都会运行成功回调,而且它早在AJAX调用启动之前就开始了,而且不知道它是否会成功。
您需要进行异步调用,否则JavaScript代码和引擎将完全阻塞,等待响应。当这是一个没有其他责任的单独过程时,这曾经是可以接受的,但在web应用程序中,这是一场灾难,因为您的代码可能有其他事情需要响应。
相关文章:
- jasmine 2-在jasmine指定的超时时间内未调用异步回调.DEFAULT_TIMEOUT_INTERVAL
- 递归调用异步函数
- Fine Uploader S3-无处安全调用异步“;setUploadSuccessParams()"
- 调用异步函数的循环
- 从视图调用异步加载模块函数
- 在循环中调用异步函数
- JavaScript ES6 承诺在 while 循环中调用异步操作
- 并行调用异步/等待函数
- 解析云代码:如何调用异步保存的承诺
- 量角器根据条件单击嵌套元素,错误 - 在指定的超时内未调用异步回调
- 反应组件调用了两次(AJAX调用异步)
- 使用 ajax 调用异步 Web api 方法
- NodeJS:调用异步函数时谁做异步工作
- 调用异步函数 befrore 服务器开始侦听
- Node JS 动态集合 ajax 调用异步等待
- 页面重定向后调用异步成功函数
- 如何在调用异步Web服务响应时将值设置为数组
- 如何在node.js可读流中调用异步函数
- 在nodejs中,是否有更好的设计模式来同步调用异步函数
- 同步调用异步 JavaScript 函数