我有这种功能:
someFunction.someMethod('param1', function(err, res1, res2) {
req.method(res1, function(err) {
if (!err) {
console.log('Yes!');
}
});
})(req, res); // <-- This one's the problem!
现在当我试图宣传它时:
var a = Promise.promisify(someFunction.someMethod);
a('param1').spread(function(res1, res2) {
console.log('Yes!');
}).catch(function(err) {
});
它不再起作用,因为我无法将(req, res)
放在它的末尾。怎么做到这一点?
答案 0 :(得分:2)
我会试试这个:
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', …)
返回的函数应该被多次调用;并且您的回调将被多次调用 - 您不能再使用承诺了。