1

几次成功调用后,我收到 ETIMEDOUT 错误...这是代码:

soap.createClient("./WSDL/test.wsdl", function (err, soapClient)
{
    if (err)
    {
         throw new Error(err)
    };

    bpData.forEach(function (elementOfArray)
    {
        soapClient.service.binding.Update({
             ProductUpload: {
                 ID: elementOfArray.ProductID,
                 newIndicator: 'false',
                 UpdateIndicator: 'true',
                 UpdateDate: dateFormat(new Date(), 'yyydd'),
                 RawData: elementOfArray.RawData1,
                 RawData2: elementOfArray.RawData2
             }
         }, function (err, result)
         {
               if (err)
               {
                   console.log(err);
                   //throw new Error(err);
                } else
                {
                    console.log(JSON.stringify(result));
                    return JSON.stringify(result);
                 }
            }
        );
.....

我已经尝试设置超时参数,但没有任何改变......

谢谢!

4

2 回答 2

1

多谢你们!它现在可以使用异步队列 :)!祝你有个美好的夜晚

于 2017-04-18T20:57:15.263 回答
0

forEach 是一个同步函数,但 soapClient.service.binding.Update 是异步的,这意味着您可以立即将所有请求排队。您应该使用 async.js 或创建自己的函数来等待第一个请求完成以转到第二个请求。

于 2017-04-18T13:45:42.120 回答