我读过这篇文章:
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
这对我有意义。非常声明的代码。
然而,一旦我真的在node.js中使用promise
做
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);
对我来说,以前的代码看起来更合理。 发生了什么事?
有什么想法吗?感谢。
答案 0 :(得分:1)
实际上创建待处理的承诺或延迟承诺是没有意义的......只需使用Promise.resolve
:
var p1 = Promise.resolve(42);
p1.then(console.log);
var p2 = Promise.resolve(2013);
p2.then(console.log);
答案 1 :(得分:0)
这只是令人困惑的实施故障。
var Promise = require("bluebird");
def = Promise.defer()
// {promise: <Promise>, resolve: <Function>, reject: <Function>}
def.promise.then(console.log)
def.resolve(123) // 『123』
作品。