我正在使用 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,但当我在 Node 控制台中查看返回值时,它看起来不同。
谢谢
最佳答案
没有理由使用 Promise
构造函数,或 - worse - 延迟,当你不需要的时候。您的函数中没有任何异步内容,因此您不需要(也不应该使用)回调。
只需使用 Promise.resolve
/Promise.reject
或它们的 Q
对应物并直接构造一个值的 promise 。无论如何,它更短更简单。
另见 Promise constructor with reject call vs throwing error .
When is a good practice to use defer?
从来没有。即使在 Q
中,您也应该使用 Q.Promise
.
Is there any difference between Promise (native) and Q? They look different when I look at the return value in node console.
好吧,它们是不同的类,具有不同的属性,Q
promises 确实有更多的方法。
不过,它们的工作原理是一样的,并且彼此之间完全可以互操作。
关于javascript - 我什么时候应该使用 Q.defer 什么时候只使用 Promise.resolve/reject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312418/