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

标签 javascript node.js promise q deferred

我正在使用 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/

相关文章:

javascript - 如何重播鼠标坐标列表以反射(reflect)输入它们的节奏?

javascript - 如何使用护照本地 Mongoose 更改密码?

node.js - 构建依赖于另一个规则的 bazel 规则

javascript - Angular JS $http Promise 的行为是否像真正的 $q Promise 一样?

javascript - 在 javascript 中使用另一个 fetch 中的 fetch

javascript - 将元素从列表拖到 div

javascript - 如何动态添加事件和事件类型到javascript而不是jquery中的元素

javascript - 将函数数组作为 bool 数组返回

node.js - step.prompt(OAUTH_PROMPT) 如何在 Node js 中的 botbuilder 版本 4 中自动移动到 waterfall 对话框中的下一个函数?

javascript - 打破 promise 链