假设我有一个搜索函数来进行HTTP调用, 每个调用的时间可能不同。 因此,我需要取消上次的HTTP请求,并等待最后一个调用。
async function search(timeout){
const data = await promise(timeout)
return data;
}
// the promise function is only for visualizing an http call
function promise(timeout){
return new Promise(resolve,reject){
setTimeout(function(){
resolve()
},timeout)
}
}
search(200)
.then(function(){console.log('search1 resolved')})
.catch(function() {console.log('search1 rejected')})
search(2000)
.then(function(){console.log('search2 resolved')})
.catch(function(){console.log('search2 rejected')})
search(1000)
.then(function(){console.log('search3 resolved')})
.catch(function(){console.log('search3 rejected')})
需要查看"search1已解决""search2已拒绝""search3已解决"。
我该如何实现这个场景?
search
时,应该将之前的 promise 标记为未解决。但是,如果你想要优先选择哪一个 promise 先解决,那么输出应该是“search1 resolved”,而其他两个则被拒绝。请明确你的问题逻辑,并使代码与解释保持一致。 - trincot