首页 > 解决方案 > 节点函数在循环中同步

问题描述

寻找一种使节点函数在循环内同步的方法,例如:

var abc = (count) => {
    for (var i = 0; i < count; i++) {
        var data = { "userName": "admin@xyz.com", "password": "xyz123#" };
        sendPost(data, function (err, data) {
            if (err) {
                console.log(err);
            }
            else {
                console.log(data);
            }
            console.log("sequence " + i);
        });

    }
    console.log("end of function");
}

var sendPost = function (data, callback) {

    console.log("post request :: " + JSON.stringify(data));
    var formData = JSON.stringify(data);
    var contentLength = formData.length;


    request({
        headers: {
            'Content-Type': 'application/json'
        },
        uri: "https://someurl/Login",
        body: formData,
        method: 'POST'
    }, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            callback(null, body);
        } else {
            console.log(error);
            callback(error);
        }
    })
}
abc(3);

所需的响应顺序应该是 post request :: obj -->>response -->>count -->>end of function

实际响应都是异步的,计数始终为 3

节点是否有某种方法可以使功能全部同步

标签: javascriptnode.jsloopsnpm

解决方案


推荐阅读