怎么取到 node 里 on 绑定的回调的返回值

let axios = require('axios');
let iconv = require('iconv-lite');

axios({
    url : 'xxxxx/gbk.html',
    responseType : 'stream' //将数据转化为流返回
})
.then(res=>{
    //此时的res.data 则为stream
    let chunks = [];
    res.data.on('data',chunk=>{
        chunks.push(chunk);
    });
    res.data.on('end',()=>{
        let buffer = Buffer.concat(chunks);
        //通过iconv来进行转化。
        let str = iconv.decode(buffer,'gbk');
        console.log(str);
        // 想将 str 返回出去
    })
})
// 在这里接收 str
const res = await axios()
阅读 1.5k
1 个回答

包装个 Promise 不就好了?

axios({
    url : 'xxxxx/gbk.html',
    responseType : 'stream' // 将数据转化为流返回
})
.then(res => {
    return new Promise((resolve, reject) => {
        // 此时的res.data 则为stream
        let chunks = [];
        res.data.on('data',chunk=>{
            chunks.push(chunk);
        });
        res.data.on('end',()=>{
            let buffer = Buffer.concat(chunks);
            // 通过iconv来进行转化。
            let str = iconv.decode(buffer,'gbk');
            // 将 str 返回出去
            resolve(str);
        });
    });
})

// 在这里接收 str
const res = await axios();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题