Maki92
Maki92

Reputation: 441

Get returned value from function

In my cordova index.js, I have these code below:

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

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.

Upvotes: 2

Views: 74

Answers (1)

Tien Duong
Tien Duong

Reputation: 2595

Because sms.send is asynchronous function. So return result; will be run before sms.send completes and triggers successs function. You need to wrap your sendSms to a Promise to return your result when sms.send succeed.

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);
    });
  }

Upvotes: 3

Related Questions