Javascript 等待是承诺中的保留词
我试图使用wait作为其他承诺的结果,但我收到的消息Javascript 等待是承诺中的保留词,javascript,Javascript,我试图使用wait作为其他承诺的结果,但我收到的消息wait是一个保留字 是否可以在承诺结果中使用wait?我想避免嵌套,所以我尝试使用wait async function trigger(name) { console.log(`Trigger calls from ${name}`) return getConfiguration(name) .then(cfg => { let twilio = new TwilioHelper( cfg
wait是一个保留字
是否可以在承诺结果中使用wait
?我想避免嵌套,所以我尝试使用wait
async function trigger(name) {
console.log(`Trigger calls from ${name}`)
return getConfiguration(name)
.then(cfg => {
let twilio = new TwilioHelper(
cfg.twilio_account_sid,
cfg.twilio_auth_token,
cfg.twilio_workspace_sid
)
twilio
.getWorkers()
.list({ taskQueueName: cfg.twilio_task_queue_name, available: 'true' })
.then(wrks => {
console.log('number of workers available', wrks.length)
let limit = wrks ? wrks.length : 0
let waitingCalls = await getWaitingCalls(name, limit)
waitingCalls.forEach(call => enqueueCall(call))
return {}
})
})
.catch(err => console.log('Error', err))
}
这是可能的,但是这可能是您在promise处理程序上下文中尝试使用
await
关键字的方式。您需要在处理函数上使用async
关键字来指定处理函数本身是异步的,如图所示:
.then(async wrks => { // Add async here
console.log('number of workers available', wrks.length)
let limit = wrks ? wrks.length : 0
let waitingCalls = await getWaitingCalls(name, limit) // Add await here
waitingCalls.forEach(call => enqueueCall(call))
return {}
})
或者,如果您对触发器
方法感兴趣,则可以通过异步/await
以这种方式单独表达触发器
方法:
async function trigger(name) {
console.log(`Trigger calls from ${name}`)
try {
const cfg = await getConfiguration(name)
let twilio = new TwilioHelper(
cfg.twilio_account_sid,
cfg.twilio_auth_token,
cfg.twilio_workspace_sid
)
const workers = await twilio.getWorkers()
const wrks = await workers.list({
taskQueueName: cfg.twilio_task_queue_name,
available: 'true'
})
console.log('number of workers available', wrks.length)
let limit = wrks ? wrks.length : 0
let waitingCalls = async getWaitingCalls(name, limit)
waitingCalls.forEach(call => enqueueCall(call))
return {}
}
catch(err) {
console.log('Error', err)
}
}
您应该能够按如下方式编写函数:
async function trigger(name) {
console.log(`Trigger calls from ${name}`)
try {
let cfg = await getConfiguration(name)
let twilio = new TwilioHelper(
cfg.twilio_account_sid,
cfg.twilio_auth_token,
cfg.twilio_workspace_sid
)
let wrks = await twilio.getWorkers()
.list({ taskQueueName: cfg.twilio_task_queue_name, available: 'true' })
console.log('number of workers available', wrks.length)
let limit = wrks ? wrks.length : 0
let waitingCalls = getWaitingCalls(name, limit)
waitingCalls.forEach(call => enqueueCall(call))
return {}
} catch (error) {
console.log('Error', err)
}
}
只要函数是
async
,您就可以使用await
(您发布的代码中没有使用await
,那么有什么问题吗?)不客气,很高兴我能为您提供帮助-祝您的项目一切顺利:-)