首页  >  文章  >  web前端  >  如何使 JavaScript 中的异步函数同步运行?

如何使 JavaScript 中的异步函数同步运行?

Susan Sarandon
Susan Sarandon原创
2024-11-18 03:31:02759浏览

How Can I Make Asynchronous Functions Behave Synchronously in JavaScript?

异步函数的同步调用

在某些特定场景中,可能需要强制异步调用在同步代码库中同步运行。虽然它通常不被认为是最佳实践,但实现它的方法如下:

通过轮询进行阻塞

首先,需要注意的是,真正阻塞 JavaScript 执行线程而不需要冻结 UI 是不可行的。但是,可以通过定期检查异步操作的完成来模拟阻塞。

function doSomething() {
  var data;

  function callback(d) {
    data = d;
  }

  myAsynchronousCall(param1, callback);

  // Poll until the data is set by the callback
  while (!data) {
    // Sleep for a short duration to avoid excessive polling
  }

  return data;
}

这种方法有效地阻塞调用函数,直到调用回调为止。然而,它需要频繁的轮询,效率很低。

基于回调的方法

更干净、更高效的解决方案是向原始异步传递一个回调函数call.

function doSomething(callback) {
  myAsynchronousCall(param1, function(data) {
    callback(data);
  });
}

修改后的 doSomething() 函数现在将回调作为参数,将使用异步调用返回的数据。

doSomething(function(data) {
  console.log(data);
});

此方法允许在同步代码中无缝处理异步调用,而不会阻塞或过度轮询。

以上是如何使 JavaScript 中的异步函数同步运行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn