can switch case будет ждать результата ожидания

#javascript #node.js #promise

#javascript #node.js #обещание

Вопрос:

 async function getUsers(type,doc){   
  switch(type){

      case "requserlist" :
        let ids = await Users.find({_id:{$in:{doc.ids}}}).distinct('user_id').exec();
          return {'_id':{'$in':ids},'login_status':{$ne:false}};
 
       default  : //allusers
      // console.log('final deafult');
        return {'is_active':true'login_status':true};      
  }
}
//=========================================================================
    getUsers(type,doc).then(conditions=>{
      // console.log('-----------------------',conditions);
})
  

когда он войдет в CASE «requserlist», will switch case будет ждать, пока не получит все идентификаторы пользователей, или перейдет к регистру по умолчанию, когда для получения результатов из await потребуется много времени.
если я использую тайм-ауты, это дает неопределенный результат,
можете ли вы сообщить нам ценные предложения, спасибо

Комментарии:

1. Он будет делать все case , что говорит соответствие. Если он переходит к первому регистру, он будет ждать, в противном случае этого не будет.

2. если type есть "requserlist" , то выполнение никогда не перейдет к default регистру. Трудно сказать, в чем ваша проблема. Зачем вам вводить setTimeouts?

3. {doc.ids} недопустимый синтаксис … также мне трудно понять ваш вопрос. В чем проблема, с которой вы столкнулись?

4. я думал, что он вернется, прежде чем запрашивать данные

Ответ №1:

Вот как switch case работает пример.

 async function TSwitch(st) {
    switch(st) {
        case 'checked':
            console.log('checked');
            break;
        case 'unchecked':
            console.log('unchecked');
            await new Promise(r => setTimeout(r, 2000));
            console.log('after promise');
            break;
    }
}

TSwitch('checked');
TSwitch('unchecked');