如何进行简单的无阻塞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)编写非阻塞代码。请在将其标记为重复之前重新阅读该问题。
带有回调的SetTimeout是解决方法。不过,请了解您的函数作用域与C#或另一个多线程环境中的作用域不同。
Javascript不等待函数的回调完成。
如果你说:
function doThisThing(theseArgs) {
setTimeout(function (theseArgs) { doThatOtherThing(theseArgs); }, 1000);
alert('hello world');
}
您的警报将在您传递的功能之前触发。
区别在于警报阻止了线程,但您的回调没有。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句