【发布时间】:2017-06-17 11:07:54
【问题描述】:
我编写了一个 Angular 服务,它从我的 C# 后端获取一些虚假数据。 C# 后端为该进程使用 ASMX 文件。我有数据回来了,一切都很好,然后我的数据永远不会填充。
我有这种感觉,这与从承诺中返回的数据传递有关。
服务:
app.service('fakeDataCenter', function ($http) {
this.getFakeData = function ()
{
var obj = {
phoneNumber: "",
faxNumber: "",
address: "Loading..",
};
$.ajax({
type: "POST",
url: "/Services/DataService.asmx/getFakeData",
cache: false,
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
success: function(data, status){
obj = data;
}
});
return obj;
};});
我可以说我在点击 obj = data 之前点击了 return obj。如何使代码仅在填充数据后返回。
我已经尝试将 return 语句放入成功函数中,但没有任何运气。它只是返回一个未定义的对象。
【问题讨论】:
-
您应该考虑使用来自 AngularJS 的
$http而不是 jQuery 的$.ajax。此处的答案是 ajax 是异步的,因此您在完成之前会返回obj。见stackoverflow.com/questions/14220321/… -
我已经更改了我的代码以实现 $http AngularJS 方式仍然得到未定义的返回,因为它在达到承诺结果之前命中了 return 语句。