【问题标题】:node streams promise error handling节点流承诺错误处理
【发布时间】:2017-09-06 19:07:42
【问题描述】:

我有这样的代码:

let generateSmth = function(len, j, stream, headers) {

    len--;
    j++;

    if (len === 0) {
        stream.write(headers.map(function(v) {return v + '_' + j;}));
        stream.end();
    } else {
        if (stream.write(headers.map(function(v) {return v + '_' + j;}))) {
            generateSmth(len, j, stream, headers);
        } else {
            stream.once('drain', ()=>{generateSmth(len, j, stream, headers)});
        }
    }
};
const fs = require('fs'),
      myStream = fs.createWriteStream('test.txt');
let myPromise = new Promise((resolve, reject)=>{
    try {
        generateSmth(10000, 0, ()=>{
            resolve(()=>{

            });
        }, myStream);
    } catch (error) {
        reject(error);
    }
});

我了解到 try/catch 不是在 generateSmth 函数中捕获错误的合适方法。但是如果我在函数中使用流,我无法理解如何捕获错误? 有人可以帮我吗?谢谢。

【问题讨论】:

  • 一个提示,解释你想用你的代码做什么,它的目的是什么,而不是仅仅粘贴一个我们必须猜测它为什么存在的代码块。你想达到什么目标?
  • 我需要写入一个由我的函数 generateSmth 生成的大约 10000 行的文件。我也应该使用 Promises。

标签: node.js error-handling stream promise


【解决方案1】:

在你的 Promise 构造函数中添加以下内容:

myStream.on('error', reject)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 2015-07-03
    • 2018-09-18
    相关资源
    最近更新 更多