0

我有以下 api:

for (var index in workload.elements) {
    (function(index) {
        var arr = [];
        var resourceIdentifiers = {};
        var elementinfo = {};
        var metadataModified = {};

        elementinfo = workload.elements[index];

        arr[index] = workload.elements[index].uri;

        if (workload.elements[index].parameters.imageUri) {
            arr.push(workload.elements[index].parameters.imageUri);
        }

        resourceIdentifiers = arr.join(',');

        console.log('uri' + resourceIdentifiers);

        mysql.elementlevelpricing(resourceIdentifiers, function(result) {

            elementlevelpricingSummary = result;

            metadataModified = workload.elements[index].metadata;

            metadataModified.pricingsummary = elementlevelpricingSummary;
            delete elementinfo.metadata;

            elementinfo.metadata = metadataModified;

            workloadinfo.elements = JSON.stringify(elementArray, null, 2);

            elementArray[index] = elementinfo;

            console.log(JSON.stringify(elementArray, null, 2));

            res.send(JSON.stringify(elementArray, null, 2));

        });

    })(index);
}

console.log 打印出正确的结果,但是对 REST 调用的响应是不正确的,并且只得到一个值进入循环的结果。

4

1 回答 1

0

首先,使用forEachmap而不是带有 IIFE 的 for 循环。

其次,一个 HTTP 请求只有一个响应。您不能通过res.send触发几次来发送多个请求。如果您想要所有信息,只需汇总结果JSON.stringify(elementArray, null, 2)并将最终汇总数据发送给res.send.

于 2013-08-04T19:32:38.910 回答