我什么时候需要在node.js中使用process.nextTick来获得最佳实践异步函数?

时间:2015-10-12 16:33:30

标签: javascript node.js asynchronous

所以我一直想知道是否需要在process.nextTick中包装需要时间的东西。

例如,假设一个函数返回转换为对象的xml字符串的promise。

(为了便于阅读,我删除了require和其他琐事。你知道这里发生了什么。)

// Return a promise for a javascript object
function parseXml(xml) {

    var promise = q.defer();

    var parser = new x2je.Parser(function(result, error) {
        if (!error)
            promise.resolve(result);
        else
            promise.reject(error);
    });

    parser.parseString(xml);

    return promise.promise;
}

你看到有些人写这样的函数:

// Return a promise for a javascript object
function parseXml(xml) {

    var promise = q.defer();

    process.nextTick(function(){
        var parser = new x2je.Parser(function(result, error) {
            if (!error)
                promise.resolve(result);
            else
                promise.reject(error);
        });

        parser.parseString(xml);
    });

    return promise.promise;
}

我何时需要使用process.nextTick进行最佳实践编码?

1 个答案:

答案 0 :(得分:-1)

你可以用setTimeout(function(){//},0)得到同样的东西; 它只是将ur函数放在队列而不是堆栈中,主要是为了使你的代码非阻塞有点

参考这些链接以加深理解

http://howtonode.org/understanding-process-next-tick

https://www.youtube.com/watch?v=8aGhZQkoFbQ