我正在使用nodejs,并且想知道何时应该使用Q延迟,何时只使用Promise.resolve / reject?
我看到了很多这两种例子,例如:
// with Q defer
fucntion oneWay(myVal) {
var deffered = Q.defer();
if (myVal < 0) {
deffered.reject(new Error('nope'));
} else {
deffered.resolve('yay');
}
return deffered.promise;
}
// native Promise
fucntion orAnother(myVal) {
if (myVal < 0) {
return Promise.reject(new Error('nope'));
} else {
return Promise.resolve('yay');
}
}
有什么区别,什么时候使用difer是一个好习惯?
Promise.resolve / reject(native)和Q.resolve / reject之间有什么区别吗?它们都返回了promise,但是当我查看节点控制台中的返回值时它看起来有所不同。
由于
答案 0 :(得分:2)
没有理由使用Promise
构造函数,或者 - worse - 在您不需要时延迟使用。Promise constructor with reject call vs throwing error。您的功能中没有任何异步,因此您不需要(也不应该使用)回调。
只需访问Promise.resolve
/ Promise.reject
或他们的Q
对应人,直接构建价值承诺。它无论如何都要简短得多。
另见Q.Promise
。
何时使用延迟是一种好习惯?
从不。即使在Q
,您也应该使用{{3}}。
Promise(原生)和Q之间有什么区别吗?当我查看节点控制台中的返回值时,它们看起来有所不同。
嗯,他们是不同的类,具有不同的属性,而Q
承诺确实有更多的方法。
虽然它们的工作方式相同,但彼此之间完全可以互操作。