在JavaScript中使用.then函数有什么用?

时间:2015-10-14 19:40:27

标签: javascript jquery angularjs

我对这个简单的问题没有太多答案。我的主要问题是我已经看到.then方法在JavaScript中使用了很多,我知道randomobject.then(//This returns success, //this returns failure)的主要内容。但有些事情我不会得到如下代码:

   var success = function (response) {
        return response.data;
    };

    var error = function (errResponse) {
        $log.error(errResponse.data.Message);
    };    

    function getsomeData() {

        var url = baseUrl + 'api/somedata';

        return $http.get(url).then(success, error);
    }

首先在该代码中我想知道var成功如何知道它获得的数据和错误相同。它说response.data但是什么是响应?它可能是http.get的结果,但代码明智无益。似乎当我有一个功能时,例如。

getsomeData返回它返回的内容。如果我做ff:

,为什么它不起作用
var dataHolder = randomAngularService.getsomeData()

它返回一个对象,该对象包含$$state下的数据,但如果你执行ff,.then会以某种方式使其工作:

randomAngularService.getsomeData().then(function (response) {
    if(response != null) {
        console.log('got the data');
        $scope.meeData = response;
    }
});

我认为.then只有两个参数?这让我很困惑。  .then属性也是JavaScript方法或jQuery方法吗?

2 个答案:

答案 0 :(得分:2)

用于替换(或提供替代方式)旧回调机制以更简洁的方式处理异步请求,而不是将回调作为参数传递,您可以使用.then链接您的函数,一旦承诺得到解决,给定的功能将被执行。

无论如何,这只是一个基本的解释,你应该真正进入承诺书以获取更多信息。

答案 1 :(得分:1)

我懒得解释整个承诺的事情,但只是回答关于.then的问题

.then内的2个参数实际上意味着"当承诺解决(成功)/拒绝(失败)时调用此函数"

关于函数内部的参数,它们应该在API中指定,因为调用者(例如$ http.get)可以决定调用该函数时要传递的内容。