Ich benutze ein Node.js request-Modul, um eine HTTP-Anfrage zu machen und wollen die Antwort auf einige Stream. Hier sind zwei Codefragmente:Node.js Rohr http Anfrage & Promises
Ein ordnungsgemäß funktionierendes Beispiel. Ich übertrage nur eine Antwort von response
Ereignis.
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))
nicht richtig funktioniert Beispiel. Ich gebe die Antwort in resolve
Rückruf eines Versprechens und Rohr von ihnen auf Versprechen then
Rückruf. Die Dateigröße dieses Ansatzes ist kleiner als beim ersten richtig funktionierenden Ansatz.
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))
Bitte, sagen Sie, warum das zweite Beispiel auch nicht richtig funktioniert?