2015-10-06 5 views
-1

Я хочу получить доступ к обновленному значению вне области, как в следующем сценарии.Как получить обновленное значение за пределами области успеха Promise

Var data = []; 

var getData = function() 
{ 
    var onSuccess = function(result) 
    { 
     data = result; 
    } 
    var onError = function(err) 
    { 
     console.log(err); 
    } 
    ApiCall().then(onSuccess, onError); 

} 
getData(); 

    console.log(data); 

Здесь в приведенном выше случае данные всегда поступают пустой массив [], а не обновленный. как я могу получить доступ к обновленным данным за пределами области действия?

ответ

0

Попробуйте следующее - вам в основном нужно вернуть свое обещание.

Var data = []; 

var getData = function() 
{ 
    var onSuccess = function(result) 
    { 
     data = result; 
     return data; 
    } 
    var onError = function(err) 
    { 
     console.log(err); 
    } 
    return ApiCall().then(onSuccess, onError); 

} 
getData().then(function (data) { console.log(data); }); 
1

Вы не можете и не должны. Вам нужно синхронизировать свой код, если вы хотите, чтобы он выполнялся асинхронно. Вы можете сделать это, используя цепочку обещаний:

return ApiCall().then(onSuccess, onError); 
... 
getData().then(console.log); 
Смежные вопросы