2015-09-23 4 views
0

Мне нужно вернуть переменную результата из этого кода, я пробую ее примерно час, но все равно без успехов ... Можете ли вы мне помочь? Я изучал предмет тоже, но без успеха ...Возвращаемая переменная из объекта

api.prototype.ajax = function() 
{ 
    marmottajax({ 
          url: "http://localhost:8080/bp/stranka/api/test", 
          method: "post", 
          parameters: 
          { 
           image: 8, 
           by: "click" 
          } 
         }).then(function(result) 
         { 
          result; //this variable i want to get/return to my function 
         }); 
} 

ответ

1

Вы не может return от вызова AJAX - вам необходимо либо использовать обещание или обратный вызов. Вот пример с обратным вызовом:

api.prototype.ajax = function(callback) { 
    marmottajax({ 
     url: "http://localhost:8080/bp/stranka/api/test", 
     method: "post", 
     parameters: { 
      image: 8, 
      by: "click" 
     } 
    }).then(function(result) { 
     callback(result); //this variable i want to get/return to my function 
    }); 
} 

И использовать его:

api.ajax(function(data) { 
    console.log(data); 
}); 
+0

Это не решает мою проблему, потому что мне нужно эта переменный, как выход из моей функции, клиент, который использовать мой API не хочет использовать это ... Существует, возможно синхронный Аякс, но я не пробовал это, как это работает с холст-игрой, может быть, игра замерзает:/ – Raiper34

+0

@ Raiper34 - Синхронный аякс заставит пользовательский интерфейс полностью блокировать - если это приемлемо, то используйте это. Иначе вы не сможете присвоить результат этой функции переменной. – tymeJV

1

Я просто узнать о обещании: P, может быть, я мог бы помочь. Потому что я вижу, что вы используете то, интересно, используете ли вы Promise.Если вы используете Promise, в функции должны быть два параметра resolved, rejected. Вы можете передать свое возвращаемое значение через функцию resolved.

Вот пример, который может вам помочь! source url

var promise = new Promise(
function(resolve, reject) { 
    console.log('in Promise constructor function'); 
    setTimeout(function() { 
    console.log('in setTimeout callback'); 
    if (Math.random() > 0.5){ 
     resolve('Here is your data'); 
    } else { 
     reject('Something happend, it causes error'); 
    } 
    }, 100); 
}); 
console.log('created promise'); 
promise.then(
    function(result) { 
    console.log('promise returned: ' + result); 
    }, 
    function(err){ 
    console.log(err); 
    } 
); 
console.log('hooked promise.then()'); 
+0

Он не решает мою проблему, потому что мне нужна эта переменная в качестве вывода моей функции, клиент, который использует мой API, не хочет использовать это ... Возможно, есть синхронный ajax, но я не пробовал, как он работает с холстом игра, может быть, игра замерзает: / – Raiper34