具有复杂计算的异步回调Javascript

时间:2017-06-21 07:36:24

标签: javascript asynchronous callback

我试图异步进行一些计算,并从回调计算中得到结果。



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操作外,是否可以进行复杂的计算?

3 个答案:

答案 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