所以我一直想知道是否需要在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
进行最佳实践编码?
答案 0 :(得分:-1)
你可以用setTimeout(function(){//},0)得到同样的东西; 它只是将ur函数放在队列而不是堆栈中,主要是为了使你的代码非阻塞有点
参考这些链接以加深理解