首页 > 解决方案 > 尝试 Catch、Async Await 导致生产中的请求超时

问题描述

我是 Try and catch with Async and Await 方法的新手,我的代码在本地主机中工作,但是当我在生产中部署生成的请求超时时需要很长时间才能成功。我想知道我对 async 和 await 的解释是正确的,数组中有很多对象是可变细节。有没有其他方法可以加快这个过程?我使用 Try and catch 来防止应用程序崩溃。谢谢你的回答。

async function find_201(req, res, data, bus, checklist, x){
try{
    let data1 = JSON.stringify(data)
    //old damaged
    const old_damaged = x.filter(obj => obj.isDamaged === true);
    //new damaged 
    const new_damaged = x.filter(({id}) => data1.includes(id)); //getting empty array
    const a_details = x.filter((id) => !old_damaged.includes(id));
    const details = a_details.filter((id) => !new_damaged.includes(id));

    for(w of details){
        let part = w.part,
            position = w.position,
            company = w.company,
            busNumber = bus,
            _id = w.id,
            mile_age = w.mile_age,
            isDamaged = false;
        let author = {
            id: req.user._id,
            username: req.user.username,
            firstName: req.user.firstName,
            lastName: req.user.lastName,
            };
        let image = {contentType: 'image/png', data: 'none'};
        let date_now = new Date().addHours(8).toISOString();
        let detail = {part:part,id:_id, position:position, company:company,isDamaged:isDamaged, mile_age: mile_age, author:author, busNumber:busNumber,image:image, date_created: date_now};
        let id = {id: _id, busNumber: bus};

        let a = await Bus.findOneAndUpdate(id, detail)
            if(!a) throw createError(404, 'Invalid ID for finding 201 file')
        let found = await Trip.findById(req.session.trip)
            if(!found) throw createError(400, 'Trip session expired, Please re-login again!')
        let raw = await Raw_360.create(detail)
            if(!raw) throw createError(400, 'Details incomplete for RAW Data 360, Please try again!')
                found.start_360.push(raw)
                found.save();
    }
    return res.redirect('/trip/' + req.session.trip)
}catch(e){
    error_logs(e, req)
    req.flash('error', 'ERROR CODE ' + e.status + ' ' + ' MESSAGE '+ e.message )
    return res.redirect('back')
}

};

标签: javascriptnode.jsasync-awaittry-catch

解决方案


推荐阅读