我有 AngularJS Controller ,可以很好地返回 $http 数据,但我只需要返回一些硬编码的 json 结构数据,但我得到了 Promise.then 不是一个函数。
似乎没有返回,就像我需要再次返回一样?
Controller :
var promise = hearingFactory.getHearingSummary();
promise.then(function (response) {
vm.myData = response;
console.log('getHearingSummary promise data', vm.myData);
}, function (err) {
console.log('err', err);
});
服务
var hearingFactory = function ($http) {
var factory = {};
factory.getHearingSummary = function () {
var url = "";
url = baseUrl + "lib/questions";
url = "test.json"
//WORKS
return $http.get(url).then(function (result) {
console.log('service',result.data);
return result.data;
});
// DOESN"T work ( I comment out the above code)
return {
"flightData": [
{
"MultiCarrier": false,
"Id": "O1"
}
]
}
}
return factory;
};
- 我的 Controller 代码和整体服务代码都没有问题
- 似乎 .then 中 $http 的双重返回 promise “有效”
- 也许我需要一个真正的 json 数据结构的“ promise ”,如果是这样,我该怎么写?
最佳答案
第一个“有效”,因为 .then()
产生了一个 promise 。您的第二个 return
语句返回一个普通对象,这不是一个 promise 。您尝试对非 promise 的内容调用 .then
。
所以返回一个 promise :
return $q.when({
"flightData": [
{
"MultiCarrier": false,
"Id": "O1"
}
]
});
关于javascript - Angular 1 Promise 调用 http 可以工作,但不能使用 json 结构中的虚假数据,promise.then 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121948/