2014-10-08 29 views
0

我有這種功能:如何promisify?

someFunction.someMethod('param1', function(err, res1, res2) { 
    req.method(res1, function(err) { 
    if (!err) { 
     console.log('Yes!'); 
    } 
    }); 
})(req, res); // <-- This one's the problem! 

現在,當我嘗試promisify它:

var a = Promise.promisify(someFunction.someMethod); 

a('param1').spread(function(res1, res2) { 
    console.log('Yes!'); 
}).catch(function(err) { 

}); 

它不工作了,因爲我不能把(req, res)在它的結束。如何實現這一目標?

+0

我有一篇文章,說明使用很清楚。看看http://grizzlybit.info/2017/09/29/Node-JS-8-Util-Promisify/ – zubair1024 2017-09-29 12:51:10

回答

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', …)返回的函數應該被多次調用;並且您的回調將被多次調用 - 您無法再使用承諾。

相關問題