【发布时间】:2018-05-06 19:44:04
【问题描述】:
(请原谅我的英语)
我现在正在学习 javascript 承诺。 下面的示例代码是一个简单的 node.js javascript 代码(我的 node.js 版本是 v10.0.0),它使用承诺链异步读取和解析 JSON 文件。
const fs = require("fs");
function readFileAsync(filename) {
return new Promise((resolve, reject) => {
fs.readFile(filename, 'utf8', (error, result) => {
if (error)
reject(error);
else
resolve(result);
});
});
}
readFileAsync('test.json')
.then(res => JSON.parse(res))
.then(res => { console.log('JSON=', res); })
.catch(err => { console.log(err.message); });
我发现此示例代码会生成不同格式的错误消息。 例如,如果它找不到'test.json',则错误消息是...
ENOENT: no such file or directory, open '/home/node/test.json'
如果它无法解析'test.json',错误信息是...
Unexpected token / in JSON at position 31
我想修改示例代码以生成始终包含 JSON 文件名的相同格式的错误消息。
为此,首先我应该知道 Promise 链的哪一部分导致了错误。我怎么知道?
【问题讨论】:
-
您检查过错误对象是否已经存在?
-
@charlietfl :对不起,我无法清楚地理解您的问题。你建议this或类似的方法吗?
-
@Bergi:感谢您的建议。我可以找到几种方法来满足我的目的。我会试试的。
标签: javascript node.js es6-promise