我想知道如何在异步等待中使用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 。有什么巧妙的方法可以编写以下代码?

最佳答案

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() {
}
  • 应该将结果返回到res
  • const res = await setImmediate(()=>{
         return readFile(filePath, 'UTF-8');
    })
    

    09-28 10:50