我试图异步进行一些计算,并从回调计算中得到结果。
function customWithCallBack(callback) {
//Complex logic calculation that takes time.
callback();
}
function actualCallBack() {
console.log("This is callback called after certain event");
}
console.log("First");
customWithCallBack(actualCallBack);
console.log("Second");

//Required Output
First
Second
This is callback called after certain event.
//Actual Output
First
This is callback called after certain event
Second
如何实现所需的输出? 这是第一次"首先打印"。然后,"第二"。 最后在完成复杂的逻辑回调后调用print "这是在特定事件"之后调用的回调。 除网络请求和i / o操作外,是否可以进行复杂的计算?
答案 0 :(得分:0)
function customWithCallBack(callback) {
//Complex logic calculation that takes time.
setTimeout(function(){ callback(); }, 100);
}
function actualCallBack() {
console.log("This is callback called after certain event");
}
console.log("First");
customWithCallBack(actualCallBack);
console.log("Second");
答案 1 :(得分:0)
所以你想结束当前的callstack,然后用你的回调启动一个新的callstack。这可以通过将回调推送到qeue来实现,qeue包含所有触发的事件处理程序和计时器,并且它一个接一个地启动新的callstack。所以你可以这样做:
setTimeout(callback,0,"param1","param2");
所以在当前的callstack结束后执行回调。
答案 2 :(得分:0)
这个问题让我有些受启发,因为前一段时间,当我尝试计算大型数组时遇到了类似的问题。
它是结合使用setTimeout
和分块操作的解决方案的组合(这样,执行不会阻塞整个线程)。
在这里,您可以看到一个创建的包:https://www.npmjs.com/package/chunked-call