繁体   English   中英

异步编程的回调方式如何保证回调function只有在做完异步任务后才运行?

[英]How does callback way of asynchronous programming ensures that the callback function is run only after doing the asynchronous task?

比如说,我必须执行一个异步任务(一个 AJAX 调用),然后运行我的回调 function。 到目前为止我在 web 上看到的回调编码方式是:

const myAsynchronousFunction = (data, callback) => {
  ajaxCall(data);
  callback();
}

这个 function 是否确保在 ajax 调用之后执行回调? 如果没有,怎么办? 如果是,它如何确保上述代码以同步方式运行。

在您的示例中,这将异步运行。 callback将在 ajaxCall 完成之前执行。

为了确保在 ajax 调用之后运行回调,您可以像这样使用async await

const myAsynchronousFunction = async (data, callback) => {
  await ajaxCall(data);
  callback();
}

注意asyncawait关键字。 这将确保ajaxCall promise 在执行callback之前完成。

或者,您可以使用Promise.then()语法,它做同样的事情:

const myAsynchronousFunction = (data, callback) => {
  ajaxCall(data).then(() => callback())
}

ajaxCall promise 成功时,它会触发then() ,然后执行你的callback()

不,您需要在 ajax 回调中调用回调。 ajax 回调 function 只会在 ajax 请求完成后开始运行。 因此,在其回调中的 ajax 之后添加您想要的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM