我该如何进行简单的、非阻塞的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"
我尝试过跟随回调和continuation的教程,但它们似乎都依赖于外部库或函数。没有一个以真空的状态回答这个问题:如何编写Javascript代码来实现非阻塞!
在提问之前,我已经很努力地搜索了这个答案,请不要假定我没有尝试。我找到的所有信息都是针对Node.js的([1], [2], [3], [4], [5]) 或者是特定于其他函数或库([6], [7], [8], [9], [10], [11]),特别是JQuery和setTimeout()
。请帮我使用Javascript编写非阻塞代码,而不是像JQuery和Node这样的工具。 请在标记为重复之前再次阅读问题。
fork()
、exec()
或pthread()
,你会找不到任何结果。为什么?因为支持子进程和线程的功能不是浏览器JavaScript的标准特性。Web workers 是一个试验性功能,旨在创建可以通信但不共享范围的附加进程。像你提议的同时运行CPU代码并不受支持。几乎所有“异步”JS代码都与I/O事件有关。对于I/O:blah() - Paul