假设我需要 POST item1 然后等待响应,然后 POST item2 等等,但我不知道项目的数量,我只知道它们需要按顺序排列。
for(item in array){
request({
uri: 'http://some.url/',
method: 'POST',
data: item
}, function(clbck){
<request with data item2 and so on>
})
}
依此类推,直到 request(n) 没有完成。
如何在不知道数量的情况下链接请求?
最佳答案
这个问题的解决方案是一个惊人的异步/等待函数。但是我在回调中使用了它们,我需要对其进行原始化。
// init a async function
const post_message = async (id, array) => {
// init loop of requests
for(let iter = 0; iter<array.length; iter++){
// lets wait for promise to resolve or reject (no need to return anything)
await new Promise(function(resolve,reject){
request({
uri: 'my_post_url',
method: 'POST',
json: {data: my_data}
},function(error,response,body){
if(error) {
reject('REJECTED')
} else {
resolve('RESOLVED')
}
})
})
}
}
瞧,我们可以链接(等待)请求一个接一个,这里的关键是等待在 promise 上寻找解决或拒绝(然后,捕获),等待不关心回调或返回或尝试/捕获方法...
关于javascript - 如何在不知道请求数量的情况下链接 Javascript ajax 请求。 ( Node ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45730801/