我一直在尝试设置一个简单的 promise 异步结构来返回从 http 请求返回的 json 对象,但我找不到任何好的示例。我确信我做错了一些可怕的事情,但我不能全神贯注。
这是我正在尝试的:
getjsonObjAsync(): any {
var deferred: ng.IDeferred<any> = this.$q.defer();
$.ajax({
url: AppSettings.jsonObjUrl,
type: 'get',
})
.then((result) => {
deferred.resolve(result);
})
return deferred.promise;
}
当我调用这个方法时,它返回
Object {then: function, catch: function, finally: function}
catch: function (callback) {
finally: function (callback) {
then: function (callback, errback, progressback) {
__proto__: Object
但我希望它返回我从 http 请求中获得的 json 对象,如果我在这里添加一个 console.log(result) 我可以看到:
})
.then((result) => {
console.log(result)
deferred.resolve(result);
})
似乎我错误地使用了 $q 系统,但我想不出返回 json 对象的正确方法。
我试着按照这里的例子: https://stackoverflow.com/a/23572025/3757782 但它仍然无法从请求中返回 json 对象
谢谢!
最佳答案
因为你要返回一个 promise
即 return deferred.promise
你需要在另一端使用 promise 即:
getjsonObjAsync().then((result)=>{
console.log(result);
});
附注:$http
(和$http.get
)优于$.ajax
。
关于javascript - 如何使用 $q 返回一个 http 请求异步的值(使用 typescript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24693589/