什么时候应该使用Q.defer,何时应用Promise.resolve / reject?

我正在使用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,但是当我查看节点控制台中的返回值时,它看起来不同。

谢谢

没有理由使用Promise构造函数,或者 – 更糟 – 延迟的,当你不需要的时候。 在你的函数中没有任何asynchronous,所以你不需要(也不应该使用)callback。

只要去Promise.resolve / Promise.reject或他们的Q对手,直接构造一个值的承诺。 无论如何,它更短更简单。

拒绝调用vs抛出错误,参见Promise构造函数 。

什么时候使用推迟是一个好习惯?

决不。 即使在Q ,你也应该使用Q.Promise

Promise(native)和Q有什么不同? 当我查看节点控制台中的返回值时,它们看起来不同。

那么,他们是不同的类别,具有不同的属性, Q承诺确实有更多的方法。
它们的工作原理虽然相同,并且完全可以互相操作。