javascript - Angular promise - POST 请求

标签 javascript angularjs asynchronous

我是编程新手,想知道为什么在 post 请求上不需要 promise ,但在 get 请求上需要 promise ?

var getAll = function() {
        return $http({
            method: 'GET',
            url: '/api/links'
        }).then(function(resp) {
            return resp.data;
        })
    }

    var addLink = function(link) {
        return $http({
                method: 'POST',
                url: '/api/links',
                data: link
            })
            //you don't need a promise on a POST!
    }

最佳答案

好吧,$http 总是在 GETPOST 上返回一个 promise 。在您的情况下,您需要对从 GET 返回的数据执行某些操作,因此您可以正确使用 Promise 的 then() 在HTTP 请求完成。

在您的POST中,您看起来并不关心响应,因此您只是选择不执行任何操作。您也可以出于多种原因轻松地将 then() 附加到您的 POST 上。

此外,还有 Promise 链,因此 then() 也返回一个 Promise。无论代码调用 getAll()addThis() ,都可以对 Promise 执行某些操作。但是,执行 getAll().then(function(data) { ... }) 的操作会将来自 HTTP 响应的数据传递给它,因为 返回 resp.data 你已经在上面了。

在这种情况下,执行 addThis().then(function(data) { ... }) 的代码会将整个 HTTP 响应传递给它,因为没有任何东西像getAll().

关于javascript - Angular promise - POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32686190/

相关文章:

angularjs - angular.js IE 路由问题

node.js - Node 骑士异步不起作用?

javascript - 异步错误卡住网站

javascript - jsTree:如何在刷新后选择节点

javascript - 我能做些什么来防止这个随机化 JS 代码中的重复?

javascript - 在 JavaScript 中将数字 (e+) 的指数表示法转换为 10^

angularjs - 两个指令共享同一个 Controller

angularjs - 在项目的构建或源版本上运行 AngularJS/Jasmine 测试

javascript - Angular Controller 完成加载异步函数后加载 html View

javascript - 火狐开发工具: Is it possible to see event listeners on document?