#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');