javascript - 如何使用 $q 返回一个 http 请求异步的值(使用 typescript)

标签 javascript json angularjs typescript q

我一直在尝试设置一个简单的 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 对象

谢谢!

最佳答案

因为你要返回一个 promisereturn deferred.promise 你需要在另一端使用 promise 即:

getjsonObjAsync().then((result)=>{
    console.log(result);
});

附注:$http(和$http.get)优于$.ajax

关于javascript - 如何使用 $q 返回一个 http 请求异步的值(使用 typescript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24693589/

相关文章:

javascript - 错误 : Failed to lookup view in express + jade

javascript - React - 输入值生成一个不起作用的数字

javascript - 在结构 Canvas 中编辑组类型的 i-text

php - Fullcalendar 使用 JSON PHP 页面作为事件源

ruby-on-rails - 在 AngularJS 中管理多对多关系

javascript - Google API 示例未加载

json - Elm 简单 JSON 列表解码

python - Scrapy + Python,从网站查找链接时出错

javascript - AJAX成功调用后多次调用?

javascript - 我如何在 ng-model AngularJS 中使用过滤器