在 mPromise 中包装 Bluebird 承诺
Wrap Bluebird promise in mPromise
我在整个服务中使用 mPromises 并且为了保持一致的接口(即 end() for ex)我需要在其中包装一个承诺的 Bluebird 函数 - 虽然我不太熟悉 mPromise 并且我没有成功。这是我拥有的:
var p = new mPromise();
p.chain(Bluebird.promisify(easypost.Address.create_and_verify, easypost.Address)(params.recipient)
.then(function(res) {
return p.resolve(res);
}, function(err) {
return p.reject(err);
});
)
return p;
这是一个但做作但总的想法。这会产生此错误:
[TypeError: Cannot call method 'bind' of undefined]
您不需要将 bluebird 承诺包装在 mPromise
中。
Mongoose 中的 Promise 是 Promises/A+ 合规的,bluebird promises 也是如此 - 您可以简单地混合和匹配它们,并且保证它们的行为一致。您可以在需要 mPromises 的地方传递 bluebird promise,反之亦然。
就是说 - 我会采取另一种方式并承诺 Mongoose.prototype
因为 bluebird 承诺易于调试并且速度更快。
如果你必须 - 你可以这样做:
var p = new mPromise();
p.fulfill().chain(bluebirdPromise);
此外,不要为每个请求都调用 promisify
- 这很昂贵 - 每个原型都调用一次。
我在整个服务中使用 mPromises 并且为了保持一致的接口(即 end() for ex)我需要在其中包装一个承诺的 Bluebird 函数 - 虽然我不太熟悉 mPromise 并且我没有成功。这是我拥有的:
var p = new mPromise();
p.chain(Bluebird.promisify(easypost.Address.create_and_verify, easypost.Address)(params.recipient)
.then(function(res) {
return p.resolve(res);
}, function(err) {
return p.reject(err);
});
)
return p;
这是一个但做作但总的想法。这会产生此错误:
[TypeError: Cannot call method 'bind' of undefined]
您不需要将 bluebird 承诺包装在 mPromise
中。
Mongoose 中的 Promise 是 Promises/A+ 合规的,bluebird promises 也是如此 - 您可以简单地混合和匹配它们,并且保证它们的行为一致。您可以在需要 mPromises 的地方传递 bluebird promise,反之亦然。
就是说 - 我会采取另一种方式并承诺 Mongoose.prototype
因为 bluebird 承诺易于调试并且速度更快。
如果你必须 - 你可以这样做:
var p = new mPromise();
p.fulfill().chain(bluebirdPromise);
此外,不要为每个请求都调用 promisify
- 这很昂贵 - 每个原型都调用一次。