使用node-request時(shí)遇到了些問(wèn)題嗡靡,記錄一下腐宋。
- 一個(gè)有意思的api:
caseless
response.caseless
是對(duì)response.headers
的再加工政冻,如下圖所示精算,通過(guò)打印結(jié)果可以看出caseless
其實(shí)是個(gè)map對(duì)象,這也為啥可以直接通過(guò)get獲取value的原因response.caseless.get('content-type')
調(diào)試技巧:
require('request').debug = true
下載的時(shí)候監(jiān)聽(tīng)
data
、end
事件搞动,并且邊收邊寫(xiě)入到本地躏精,發(fā)現(xiàn)request的回調(diào)函數(shù)會(huì)提前執(zhí)行,這個(gè)時(shí)候end
事件慢半拍鹦肿,而且下載完成的文件打不開(kāi)矗烛。
data
、end
箩溃、回調(diào)函數(shù)
三者之間的關(guān)系及順序瞭吃?
示例代碼
const url = 'https://puap.qpic.cn/newsapp_ls/0/12689062816/0'
request(url, function (err, res, data) {
console.log('callback run...')
})
.on('response', response => {
console.log('statusCode:', response.statusCode)
})
.on('data', chunck => {
console.log('receive chunck len:', chunck.length)
})
.on('end', () => {
console.log('request end...')
})
.on('error', error => {
console.log('error:', error)
})
運(yùn)行結(jié)果:
當(dāng)把上面的url對(duì)應(yīng)的是無(wú)資源,則可能會(huì)出現(xiàn)下面的情況:
總結(jié):無(wú)論response的狀態(tài)是多少涣旨,總是先響應(yīng)
response
-> data
事件 -> end
-> callback