2016-03-31 9 views

Antwort

1

Vermutlich ist das Problem Sie konfrontiert, dass http.request eher einen Rückruf nimmt als ein Versprechen der Rückkehr, so kann man es nicht yield von koa. Sie müssen http.request in einer Funktion umbrechen, die eine Zusage zurückgibt und die Versprechensauflösung in den Rückruf einhängt, während Sie gleichzeitig die Zusageverweigerung in den Fehlerhandler einhängen.

function request(opts, body) { 
    return new Promise((resolve, reject) => { 
    body.pipe(http.request(opts, resolve)) 
    .on('error', reject); 
    }); 
} 

... später in Ihrer koa Funktion ...

var response = yield request(opts, body); 

Es gibt so viele möglichen Variationen dieser, dass ich nicht in der Nähe, alle für die Auflistung sie kommen könnte, aber das ist die Grundidee :)

Verwandte Themen