我有一个工厂去服务器抓取一些参考数据。如何让Javascript在继续之前等待异步调用?
通过的问题是,下面的http get调用是异步的,所以一旦它被调用,它就会进入下一行。所以在下面的代码中,它会将数据返回为null,因为在http调用完成时,并且我的回调开始,复制到数据变量时,它已经退出了该方法。
如何在继续下一行之前让它等待回调函数运行?
我在这里使用Angular。
app.factory('referenceDataFactory', ['$http', function ($http) {
var factory = [];
factory.getSports = function() {
var data;
$http.get('/Home/GetSports').success(
function (obj) {
data = obj;
});
return data;
// return [{ id: 1, name: 'Volleyball' }, { id: 2, name: 'Football' }, { id: 3, name: 'Tennis' }, { id: 4, name: 'Badminton' }];
}
return factory;
}]);
你可以通过它进行同步调用。 – GolezTrol
将所有逻辑移入回调,或使用延期。 – elclanrs
您无法让JavaScript等待异步调用的结果。相反,您必须重写您的逻辑以异步方式工作,您的进程的下一步由异步调用的成功处理程序触发。 – jfriend00