javascript - 循环中的 HTTP.post() 回调

标签 javascript http meteor callback

我的 meteor 服务器上有一个 HTTP.post() 循环:

for (var i = 0; i < smsMessages.length; i++) {
    HTTP.post("https://smsapiaddress/sms.do", smsMesseges[i], function(error, result) {
        if (error) {
            setErrorInDatabase(smsMessages[i]);
        }
        if (result) {
            setResultInDatabase(smsMessages[i]);
        }
    });

我怎样才能轻松地将正确的 smsMessages[i] 传递到回调函数中?

最佳答案

因为 http 请求是异步 i 的值将被所有请求共享。在 for 循环中使用 closures。它将为每次迭代保留一份单独的 i 副本。

查看代码中突出显示的注释:

for (var i = 0; i < smsMessages.length; i++) {

    (function(i) {
    // ^^^^^^^^^^^
        HTTP.post("https://smsapiaddress/sms.do", smsMessages[i], function(error, result) {
            if (error) {
                setErrorInDatabase(smsMessages[i]);
            }
            if (result) {
                setResultInDatabase(smsMessages[i]);
            }
        });
    }(i)); // call the function with the current value of i
    // ^^^
}

关于javascript - 循环中的 HTTP.post() 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047525/

相关文章:

javascript - Handlebars 脚本中的 JS 变量

javascript - jquery 文本旋转

http - 具有 HTTP2 前端和 HTTP1.1 后端的 HAProxy

javascript - 在允许钩子(Hook)中使用异步验证

javascript - 按住单击时更改图片

javascript - 如何确认选中的单选按钮?

http - WWW 是否在 Unity 支持的所有平台上都可用?

java - 如果从服务器 : Gets called successfully if invoked from Junit(locally) 调用 Web 服务客户端失败

meteorjs Iron-router waitOn 并用作渲染数据

javascript - 如何在 Meteor React js 中使用 alanning 角色?