2013-10-13 6 views
9

나는 약속 제어 흐름을 가지고 놀고 있는데, bluebird을 사용하고 있습니다. Bluebird는 일반 콜백 함수를 promise 함수로 변환하는 .promisify() 메서드를 제공하지만 함수가 불규칙 할 때 내가 무엇을해야하는지 잘 모르겠습니다. 콜백 대신약속 및 불규칙한 콜백

err, res, body 

입니다 예를 들어, requestjs 요청에 대한 메소드 서명은

request(url, callback) 

입니다 정규

err, res 

어떻게 약속이 변환되어야 하는가?

답변

14

Promise.promisify()도 이와 같은 콜백을 사용할 수 있습니다.

// ... 

request('http://stackoverflow.com').spread(function (response, body) { 
    console.log(response.statusCode); 
}); 
+5

것은 또한이어야한다 : Esailija이 코멘트에 언급 한 바와 같이

var Promise = require('bluebird'); var request = Promise.promisify(require('request')); request('http://stackoverflow.com').then(function (result) { var response = result[0]; var body = result[1]; console.log(response.statusCode); }); 

는 어떤 개별 인수에 다시 .spread()을 할 수 있습니다 : 여러 값이 주어진 경우, 그들은 단지 Array에 따라 전달 될 것입니다 [] .spread (function (response, body) {})'] (https://github.com/petkaantonov/bluebird/blob/master/API.md#spreadfunction-fulfilledhandler--function-rejectedhandler--)를 사용할 수 있습니다. - .promise) 대신에 .then' – Esailija