Javascript 如何在节点中调用调用顺序->;表达式^4.14
我需要在API返回的响应中搜索给定的“键”。我必须用不同的输入多次调用同一个API。 从API获得响应后,我需要在API响应中搜索密钥。如果密钥不存在,则使用不同的输入和搜索再次调用相同的API…继续 基本上,直到我在API响应中完成一次搜索键的迭代,执行应该等待。如何才能做到这一点?请建议 我尝试了下面的方法,执行时不必等到它在API响应中搜索键Javascript 如何在节点中调用调用顺序->;表达式^4.14,javascript,node.js,express,promise,synchronization,Javascript,Node.js,Express,Promise,Synchronization,我需要在API返回的响应中搜索给定的“键”。我必须用不同的输入多次调用同一个API。 从API获得响应后,我需要在API响应中搜索密钥。如果密钥不存在,则使用不同的输入和搜索再次调用相同的API…继续 基本上,直到我在API响应中完成一次搜索键的迭代,执行应该等待。如何才能做到这一点?请建议 我尝试了下面的方法,执行时不必等到它在API响应中搜索键 for (i=0;i< departments.length;i++)
for (i=0;i< departments.length;i++)
{
getInformation(departments[i]).
then((response) => {
//verify whether given key present in response
})
.catch((err)) => {
//log error
});
}// end of for loop
}
for(i=0;i{
//验证响应中是否存在给定的密钥
})
.catch((err))=>{
//日志错误
});
}//循环结束
}
注意:我想用next键继续搜索操作,即使它们在一个API调用中有任何异常
谢谢您必须使用递归
let departments = [xxx]
let myResult = []
const search = (pool, resolve, reject) => {
if (pool.length === 0) {
return resolve()
}
let [department, ...rest] = pool
getInformation(department)
.then(data => {
myResult.push('something')
})
.catch(e => {})
.finally(() => {
search(rest, resolve, reject)
})
}
const searchInDeps = new Promise((resolve, reject) => {
search(departments, resolve, reject)
})
searchInDeps
.then(() => {
// do something with myResult
})
.catch(e => {})
另一种方法是,当您需要循环时,您可以运行每个承诺,并等待所有承诺的结果
let searches = []
for (i=0;i< departments.length;i++) {
searches.push(new Promise((resolve, reject) => {
getInformation(departments[i])
.then(data => {
resolve('something')
})
.catch(e => resolve('something'))
})
}
Promise.all(searches)
.then(results => {
// array of results
})
.catch(error => {})
let search=[]
对于(i=0;i{
获取信息(部门[i])
。然后(数据=>{
解决(‘某事’)
})
.catch(e=>resolve('something'))
})
}
承诺。全部(搜索)
。然后(结果=>{
//结果数组
})
.catch(错误=>{})