我有这样的功能:
someFunction.someMethod('param1', function(err, res1, res2) {
req.method(res1, function(err) {
if (!err) {
console.log('Yes!');
}
});
})(req, res); // <-- This one's the problem!
现在当我尝试 promise 它时:
var a = Promise.promisify(someFunction.someMethod);
a('param1').spread(function(res1, res2) {
console.log('Yes!');
}).catch(function(err) {
});
它不再起作用了,因为我无法将 (req, res)
放在它的末尾。如何实现这一目标?
最佳答案
我会尝试这个:
var a = Promise.promisify(function(arg, cb) {
someFunction.someMethod(arg, cb)(req, res);
});
a('param1').spread(function(res1, res2) {
console.log('Yes!');
}).catch(function(err) {
});
…是的,它很丑。然而,这个部分应用程序可能表明 someFunction.someMethod('param1', …)
返回的函数应该被多次调用;并且您的回调将被调用多次 - 您不能再使用 promise 。
关于javascript - 如何 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254104/