2016-03-31 2 views

ответ

1

Предположительно проблема вы столкнулись, что http.request принимает обратный вызов, а не возвращать обещание, так что вы не можете yield его из коа. Вам нужно обернуть http.request в функции, которая возвращает обещание и перехватит обещание в обратном вызове, а также закрепит отказ обещания в обработчике ошибок.

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

... позже в функции коа ...

var response = yield request(opts, body); 

Есть так много возможных вариаций на это, что я не мог приблизиться к ним всем перечислениям, но это основная идея :)