如何制作非阻塞的JavaScript代码?

user1717828:

如何进行简单的无阻塞Javascript函数调用?例如:

  //begin the program
  console.log('begin');
  nonBlockingIncrement(10000000);
  console.log('do more stuff'); 

  //define the slow function; this would normally be a server call
  function nonBlockingIncrement(n){
    var i=0;
    while(i<n){
      i++;
    }
    console.log('0 incremented to '+i);
  }

输出

"beginPage" 
"0 incremented to 10000000"
"do more stuff"

如何形成一个简单的循环以异步执行并通过回调函数输出结果?这个想法是不阻止“做更多的事情”:

"beginPage" 
"do more stuff"
"0 incremented to 10000000"

我尝试了以下关于回调和延续的教程,但它们似乎都依赖于外部库或函数。他们中没有一个人在真空中回答这个问题:一个人如何编写Java代码来实现非阻塞!?


在问之前,我已经非常努力地寻找这个答案。请不要以为我没看。我发现的所有内容都是特定于Node.js的([1][2][3][4][5])或其他特定于其他功能或库的[[6][7][8][9][10][11]),尤其是JQuery和setTimeout()请帮助我使用Javascript而非Java编写的工具(如JQuery和Node)编写非阻塞代码请在将其标记为重复之前重新阅读该问题。

安德鲁·霍夫曼(Andrew Hoffman):

带有回调的SetTimeout是解决方法。不过,请了解您的函数作用域与C#或另一个多线程环境中的作用域不同。

Javascript不等待函数的回调完成。

如果你说:

function doThisThing(theseArgs) {
    setTimeout(function (theseArgs) { doThatOtherThing(theseArgs); }, 1000);
    alert('hello world');
}

您的警报将在您传递的功能之前触发。

区别在于警报阻止了线程,但您的回调没有。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

阻塞与非阻塞异步代码

Javascript非阻塞

如何将阻塞代码重构为对node.js非阻塞

阻塞代码循环到非阻塞代码节点js

与非阻塞代码相比,阻塞代码有什么优势?

反应式宣言:非阻塞代码还是阻塞代码?

如何用Javascript编写非阻塞回调?

非阻塞HTTP服务器中的阻塞代码

如何实现非阻塞IO?

如何使 rxjs 非 ui 阻塞?

非阻塞API如何工作?

如何从stdin读取非阻塞?

如何重叠非阻塞通信

为FSMC LCD编写非阻塞代码

Node.js:非阻塞代码

是否可以在PHP V8js上创建非阻塞javascript代码?

如何将此代码转换为非阻塞和无锁的?

使用 Python 3 代码中的 asyncio,我如何反复(重新)启动/停止非阻塞 websocket IO?

如何在 spring 批处理中制作非阻塞项目处理器(不仅与任务执行器异步)?

如何将 async/await 代码转换为 javascript 中的阻塞代码?

阐明非阻塞异步的代码示例。代码-是否正确?

当JavaScript是单线程语言时,如何在JavaScript中实现异步无阻塞代码?

我们可以制作具有阻塞套接字的非阻塞服务器吗?

如何制作最短的代码?

以非阻塞调用 JavaScript 的方式调用 API

如何制作Javascript(下雨矩阵代码)作为网站的背景

Scala期货如何在线程上运行?以及如何将它们用于执行异步和非阻塞代码?

将循环阻塞代码重写为SwiftNIO样式的非阻塞代码

如何在DNN客户端资源管理中使用异步(非阻塞)javascript