javascript - JavaScript 中 `promise` 的实现

标签 javascript node.js promise

我读过这篇文章:

Callbacks are imperative, promises are functional: Node’s biggest missed opportunity

有一个代码:

var p1 = new Promise();
p1.then(console.log);
p1.resolve(42);

var p2 = new Promise();
p2.resolve(2013);
p2.then(console.log);

// prints:
// 42
// 2013

这对我来说很有意义。非常声明性的代码。

但是,一旦我真正使用promise在 Node.js 中 正在做

npm bluebird

这是实际有效的代码:

var Promise = require('bluebird');

var r1;
var p1 = new Promise(function(resolve){
  r1 = resolve;
});

p1.then(console.log);
r1(42);

var r2;
var p2 = new Promise(function(resolve){
  r2 = resolve;
});

r2(2013);
p2.then(console.log);

对我来说,前面的代码看起来更合理。 这是怎么回事?

有什么想法吗?谢谢。

最佳答案

实际上,创建待处理的 Promise 或延迟根本没有意义。只需使用 Promise.resolve:

var p1 = Promise.resolve(42);
p1.then(console.log);

var p2 = Promise.resolve(2013);
p2.then(console.log);

关于javascript - JavaScript 中 `promise` 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789535/

相关文章:

javascript - 如何中止(停止)循环执行的 promise 链? - JavaScript

php - 倒数计时器无法正常工作

javascript - 将 Breeze.js 与服务器端缓存一起使用

php - Node Crypto createHmac() 输出与具有相同输入的 PHP hash_hmac() 输出不同吗?

javascript - 重击 : nodemon: command not found

jquery - 需要在node中使用jquery

node.js - 创建 promise 数组

javascript - 延迟 promise - 如果回调不符合条件,则重新发送相同的请求

javascript - Firebase/Google 登录认证 : profile photo not retrieved on gmail business account

javascript - Angularjs $document[0].activeElement 而不是 $document.activeElement