如果我需要一个文件
require('file.json');
如何检查JSON是否有效?试着抓? 我现在正在使用蓝鸟承诺,所以它刚刚返回
Promise.resolve(require('file.json'));
和bluebird捕获如果找不到文件但我还需要检查JSON的健全性。我明白你可以把JSON.parse传递给一个可以。如果文件本身是由FS或其他任何东西返回的字符串,但我不介意缓存,并要求更快
答案 0 :(得分:0)
的问题
Promise.resolve(require('file.json'));
是以
运行var obj = require('file.json');
Promise.resolve(obj);
这意味着如果require
抛出,则承诺无法捕获它。相反,我建议你做
new Promise(function(resolve){
resolve(require('file.json'));
})
这会从promise中执行require
,因此可以正确捕获抛出的错误。
答案 1 :(得分:0)
您正在寻找Bluebird try
function。如果您使用resolve
,require()
调用可能会在其结果包含在承诺中之前抛出。
Promise.try(require, 'file.json')
Promise.try(() => require('file.json')) // Bluebird 3.0
或者使用
Promise.resolve('file.json').then(require)
// or
Promise.method(require)('file.json')