Я использую модуль Node.js request, чтобы сделать запрос http и хочу передать ответ на какой-то поток. Вот два фрагмента кода:Node.js pipe http request & Promises
Правильно действующий пример. Я просто передаю ответ от события response
.
const fs = require('fs')
const path = require('path')
const request = require('request')
const filepath = path.resolve('./tmp.zip')
const ws = fs.createWriteStream(filepath)
function get() {
return new Promise((resolve, reject) => {
request.get(uri, options)
.on('response', (res) => {
ws.on('finish',() => console.log('finish'))
res.pipe(ws)
resolve()
})
.on('error', (err) => {
reject(err)
})
})
}
get().then(() => {
console.log('done')
}).catch((err) => console.log(err))
Не работает должным образом пример. Я передаю ответ в resolve
callback обещания и трубы от них по обещанию then
callback. Размер файла такого подхода - smoller, а затем из первого правильно работающего подхода.
const fs = require('fs')
const path = require('path')
const request = require('request')
const filepath = path.resolve('./tmp.zip')
const ws = fs.createWriteStream(filepath)
function get() {
return new Promise((resolve, reject) => {
request.get(uri, options)
.on('response', (res) => {
resolve(res)
})
.on('error', (err) => {
reject(err)
})
})
}
get().then((res) => {
ws.on('finish',() => console.log('finish'))
res.pipe(ws)
}).catch((err) => console.log(err))
Пожалуйста, скажите, почему второй пример не работает должным образом?