我想知道如何在异步等待中使用setImmediate并正确处理错误。我写了下面的代码。但是我不确定它是否遵循最佳实践。
我的快速应用中有一条路线
router.get('/parseinvoice', async (req, res, next) => {
try {
const parsedInvoiceResponse = await userhelper.getParseInVoiceList();
res.json({parsedInvoiceResponse})
} catch (error) {
res.json({});
}
});
userhelper类代码
var userhelper = {};
const fs = require('fs'),
path = require('path'),
filePath = path.join(__dirname, './input_user_story_12.txt');
const { promisify } = require('util')
const readFile = promisify(fs.readFile);
userhelper.getParseInVoiceList = async function() {
return new Promise( async (resolve, reject) => {
try {
setImmediate(async function() {
try {
const contents = await readFile(filePath, 'UTF-8');
resolve(contents);
} catch (error) {
reject(error);
}
});
} catch (error) {
reject(error);
}
});
}
module.exports = userhelper;
尽管我得到了答复。我不确定 setImmediate部分,是否需要多个 try catch 。有什么巧妙的方法可以编写以下代码?
答案 0 :(得分:1)
try {
setImmediate(async ()=>{
var res = await readFile(filePath, 'UTF-8');
})
} catch(err) {
}
2。
await setImmediate(()=>{
var res = await readFile(filePath, 'UTF-8');
}).catch(){}
3。
try {
await setImmediate(()=>{
await readFile(filePath, 'UTF-8');
}).catch(){}
} catch() {
}
const res = await setImmediate(()=>{
return readFile(filePath, 'UTF-8');
})
答案 1 :(得分:0)
为什么不只使用?
userhelper.getParseInVoiceList = async function() {
return await readFile(filePath, 'UTF-8');
}
答案 2 :(得分:0)
扩展for i in range (0,10):
if i==5:
i = 3
print i
的答案,可以在调用异步承诺的@Dan D.
之前await
解决异步setImmediate
的问题,但是我不确定为什么您在没有更多上下文的情况下就需要这样做。
readFile