从函数获取返回值

时间:2019-07-26 05:05:05

标签: javascript cordova-plugins

在我的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;
    }
}

我希望从index.html的sendSms中获取结果

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

我不确定此方法叫什么,但是在回调后无法获取该值。我的结果将是“退货”。

1 个答案:

答案 0 :(得分:2)

因为sms.sendasynchronous函数。因此,return result;将在sms.send完成并触发successs功能之前运行。您需要将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);
    });
  }