我想知道如何使用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 part,我不确定是否需要多次try catch。有什么简洁的方法来编写下面的代码吗?
发布于 2019-12-12 00:56:48
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');
})发布于 2019-02-22 15:10:45
你为什么不只是吸毒?
userhelper.getParseInVoiceList = async function() {
return await readFile(filePath, 'UTF-8');
}发布于 2020-01-07 23:20:34
扩展@Dan D.的答案,您可以在调用异步PromisifiedreadFile之前先解析异步setImmediate,但我不知道为什么需要在没有更多上下文的情况下这样做。
userhelper.getParseInVoiceList = async function() {
await new Promise((resolve) => setImmediate(() => resolve()));
return await readFile(filePath, 'UTF-8');
}https://stackoverflow.com/questions/54829367
复制相似问题