正确处理异步中多个等待的方法

时间:2018-12-18 11:19:45

标签: javascript node.js

我有一个异步函数(控制器),里面有多个等待对象。例如,我可以有这样的东西:

import re

....
print(special_code)
jsonStr = re.search(r'(\{.*?\});', special_code, re.S).group(1)
combinationsFromController = json.loads(jsonStr)

for key in combinationsFromController:
    print(key)
    # 224114
    # 224140
    # 224160

所以我的疑问是:

  1. 如何处理依赖于第一次的第二次等待的情况,因为如果第一个返回[]或为null,则它将中断place.areaId
  2. 第二,如果我有多个控制器,则需要查询Place,Area,Client,这是一种为每个控制器创建函数并在主控制器内部调用它们的解决方案。最好的方法是什么?
  3. 如果我需要在数据库中编写3个独立文档,如何确定所有3个文档都已执行?我不想让一个失败,或者如果失败,我想确保回退另一个。像这样

    exports.check_in = async (req, res, next) => {
    try {   
        const place= await Place.findOne({_id: req.params.placeId});
        // MY SECOND DEPENDS ON THE RESULT OF THE FIRST ONE
        const area=  await Area.findOne(_id: place.areaId);
        const client = await Client.findOne({_id: req.body.clientId});
    
        // BUSINESS LOGIC HERE
    
        } catch (error) {
            next(error);
        }
    }
    

0 个答案:

没有答案