Как получить значение, возвращаемое функцией обратного вызова? - PullRequest
1 голос
/ 18 апреля 2011

Вот мой кусок кода, который я пытаюсь:

initData:function(period)
{    
    this.getLoadObject('0',url, this.callbackFunction);
},

Я хочу получить возвращаемое значение из callBackFunction, которое я хочу вернуть initData.

Может любойпомогите мне, я не очень опытный с JS.Я пробовал подобный вопрос , но не получил помощи.

Ответы [ 3 ]

2 голосов
/ 18 апреля 2011

На самом деле, функция обратного вызова вполне может быть вызвана асинхронно, то есть после возврата из вызова initData.

Если это синхронно, вы можете сделать это:

initData:function(period)
            {   
                var that = this;
                var result;
                this.getLoadObject('0',url, function() {
                    result = that.callbackFunction(arguments));
                });
                return result;
            },
1 голос
/ 18 апреля 2011

Хотя из вашего фрагмента кода невозможно узнать, похоже, что ваша функция обратного вызова будет вызываться асинхронно. если это так, вам нужно установить переменные, которые вы хотите заполнить initData, внутри самой функции обратного вызова.

Вы также можете обернуть функцию обратного вызова:

    var context = this;
    this.getLoadObject('0',url, function() {
       var returnedval = context.callbackFunction.apply(context,arguments);
       context.SomeFuctionToUseValue(returnedval);
    });
0 голосов
/ 18 апреля 2011

Я думаю, что вы можете использовать переменную вне функции, чтобы вы могли получить к ней доступ внутри функции обратного вызова и снаружи.

var result = false;
initData:function(period)
{   
   this.getLoadObject('0',url, this.callbackFunction);
   //inside the callback you can modify the "result" then
   return result;
},
...