最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

返回不停止功能

运维笔记admin12浏览0评论

返回不停止功能

返回不停止功能

我有以下代码

        insertcontact(root, args) {
        var finalresult = '';
        var soap = require('soap');
        var url = 'http://192.168.100.2/setlead/webservice.asmx?wsdl';
        var soapargs = {
            contacto: args.contacto, token: args.token, PrimeiroNome: args.PrimeiroNome, Apelidos: args.Apelidos, Email: args.Email, Telefone: args.Telefone, Origem: args.Origem
        };
        soap.createClient(url, function (err, client) {
            if (err) {
                console.log(err);
                finalresult = err
                return { contacto: "error cliente" };
            }
            else {
                client.OperationDetail(args, function (err, result) {

                    console.log(result);
                    return { token: result };
                });
            }
        });
        return {
            contacto: args.contacto,
            PrimeiroNome: args.PrimeiroNome,
            token: args.token,
            Apelidos: args.Apelidos,
            Email: args.Email,
            Telefone: args.Telefone,
            Origem: args.Origem
        };
    }
}

该操作不会触发任何错误,我确实在控制台日志中收到了结果。但我没有收到该部分之后宣布的退货。该函数继续,我收到声明的最后一个返回。它不应该停止在返回结果?

回答如下:

这是Javascript中的经典错误。 由于其异步行为,该函数甚至在开始创建soap客户端之前将返回。

该函数实现不是很好,因为它返回params,无论客户端创建过程的结果如何。

像这样做会好得多,如果需要的话,在return语句中使用嵌入式soap args,当然没有最后一个return语句:

// ...
soap.createClient(url, function (err, client) {
  if (err) {
    console.log(err);
    finalresult = err
    return { contacto: "error cliente" };
  } else {
    client.OperationDetail(args, function (err, result) {
      console.log(result);
      return {
        token: result,
        soapargs: soapargs
      };
    });
  }
});

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论