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

When should I use Q.defer and when just Promise.resolve/reject?

我正在使用 nodejs,想知道什么时候应该使用 Q defer,什么时候只使用 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有区别吗?他们都 return 承诺但是当我在节点控制台中查看 return 值时它看起来不同。

谢谢

没有理由在不需要时使用 Promise constructor, or - - 延迟。您的函数中没有任何异步内容,因此您不需要(也不应该使用)回调。

只需寻找 Promise.resolve/Promise.reject 或他们的 Q 对应物并直接构造一个值的承诺。无论如何,它更短更简单。

另见

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 确实有更多的方法。
尽管它们的工作方式相同,并且彼此之间完全可以互操作。