javascript - 如何在不知道请求数量的情况下链接 Javascript ajax 请求。 ( Node )

标签 javascript node.js ajax

假设我需要 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/

相关文章:

node.js - MongoDB查询日期字段与服务器时间

node.js - 错误 : Cannot find module 'polka' on Heroku

node.js - FCM 错误结果 - 将错误引用到 token

jquery - 为什么我的第二个下拉菜单没有被填充?

java - sj :submit and s:submit on the same form

javascript - AngularJS:使用history.pushState()删除 "#"

javascript - Interactjs 旋转改变位置

javascript - 压缩一串位(例如 "000100111110001")

javascript - 在父级的其他地方导航后,是否可以在 JavaScript 中重用弹出窗口?

php - 如何使用 ajax 和 php 从数据库中检索数据?