【问题标题】:Pipe after successful condition Node js [duplicate]成功条件节点js后的管道[重复]
【发布时间】:2018-12-26 17:20:41
【问题描述】:
request.get(fileLink)
    .on('response', function(response) {
        if (response.statusCode == 200 && response.headers['content-type'] == 'application/vnd.ms-excel') {
           return true;
        } else {
         return false;
        }
    })
    .pipe(fs.createWriteStream('data.xls'));

如果响应代码为 200 且内容类型为 application/vnd.ms-excel,我需要保存文件。如何组织代码?

【问题讨论】:

    标签: javascript node.js conditional-statements


    【解决方案1】:

    这样做的方法是,如果满足条件,则通过管道传递response,否则销毁response 流。

    request.get(fileLink)
        .on('response', function(response) {
            if (response.statusCode == 200 && response.headers['content-type'] == 'application/vnd.ms-excel') {
                return response
                    .pipe(fs.createWriteStream('data.xls'))
                    .on('error', console.error)
            }
    
            response.destroy();
        });
    

    【讨论】:

    • response.destroy() 用于避免内存泄漏?
    • 在没有destroy的情况下尝试一下,直到发出整个数据,请求才会结束。这样你就可以关闭流,忽略任何数据,因为你不关心它。
    • console.error 还是 console.error()?
    • console.error 因为on('error' 有一个函数。如果出现错误,它将调用console.error()。相当于:on('error', err => console.error(err))
    • 哦,是的,是回调
    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多