简体   繁体   English

从函数获取返回值

[英]Get returned value from function

In my cordova index.js, I have these code below: 在我的cordova index.js中,下面有这些代码:

var app = {
    sendSms: function(strNumber, strMessage) {
        var result = '';

        var success = function () {
            result = 'ok';
        };

        var error = function (e) {
             result = 'failed'; 
        };

        sms.send(strNumber, strMessage, options, success, error);

        return result;
    }
}

From index.html, I wish to get the result from my sendSms 从index.html,我希望从我的sendSms获得结果

var result = app.sendSms(number, message);

I not sure what is this method called, but I am unable to get the value after it's callback. 我不确定这个方法叫什么,但是在回调之后我无法获取该值。 My result will be '' on return. 我的结果将是“返回时”。

Because sms.send is asynchronous function. 因为sms.sendasynchronous函数。 So return result; 因此return result; will be run before sms.send completes and triggers successs function. 将在sms.send完成并触发successs功能之前运行。 You need to wrap your sendSms to a Promise to return your result when sms.send succeed. 您需要将sendSms包装到Promise以便在sms.send成功时返回结果。

sendSms: function(strNumber, strMessage) {
    return new Promise(function (resolve, reject) {
      var success = function () {
        resolve('ok');
      };

      var error = function (e) {
        reject(e);
      };

      sms.send(strNumber, strMessage, options, success, error);
    });
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM