Reputation: 441
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
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