我在stackoverflow上读到了一些关于这个话题的问题,但似乎没有一个能回答我的疑问。
我知道如何使用process.nextTick创建异步函数
var async_function = function(val, callback){
process.nextTick(function(){
callback(val);
});
};我也读到过Promise,但是如何在不使用process、Promise等库的情况下编写异步非阻塞函数?
原生方法是什么?我首先想到的是这个方法:
var async = function(val, cb) {
cb(val);
}然而,该函数块:
async(3, function(val) {
console.log(val);
});
console.log(4);
// returns:
3
4那么正确的实现是什么呢?如果不依赖这些库,我如何才能编写异步函数?
发布于 2012-11-28 13:58:05
在Node.js上,您需要使用process.nextTick。在浏览器中,你可以使用比setTimeout(function(){},0)高效得多的postMessage hack。
下面是postMessage hack的跨浏览器实现:https://github.com/timoxley/next-tick/blob/master/index.js
发布于 2012-11-28 10:59:23
您可以使用setTimeout -它的本机函数就像延迟一样。
发布于 2012-11-28 11:35:48
将函数的工作分解成块,并在当前块完成后使用process.nextTick对下一个块进行排队。这样,您就可以在每个工作块之间执行其他排队的回调。当所有块都完成时,调用作为参数传递到函数中的回调。
上面是假设你的函数没有调用现有的异步API,这自然会使你的函数异步,而不需要做任何特殊的事情。
https://stackoverflow.com/questions/13597012
复制相似问题