差异:回报承诺和回报承诺。然后

时间:2017-12-14 16:41:13

标签: javascript promise

我的工厂里有这样的方法

getTogether() {
        let promise = this._$q.all([this._$http.get('/groups'), this._$http.get('/tasks')]);
        return promise
            .then((data) => {
                //local variable for reduce server<->client
                this._localList = data;
                return this._localList;
            });
    };

我在控制器中调用此方法。

this._boardFactory.getTogether().then((list) => {
            console.log(list)
        });

一切都很完美,但我不理解一件事。

返回promise和返回promise.then之间的区别是什么?
谢谢你的支持

2 个答案:

答案 0 :(得分:0)

如果您只在代码中执行return promise,则会返回promise对象的分辨率。但是,如果您执行return promise.then,则会从then子句返回承诺的解决方案。

then返回一个promise,因此promise.then将执行promise,然后执行返回该promise的then子句。

此处then的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

答案 1 :(得分:-3)

我说Promise是对象,then()是Promise对象的方法,它重新运行另一个Promise。

Promise.prototype.then(onFulfilled, onRejected) - 将履行和拒绝处理程序附加到承诺,并返回一个新的承诺,解析为被叫处理程序的返回值,如果未处理承诺,则返回其原始结算值(即,如果相关处理程序onFulfilled或onRejected不是函数)。 下图说明了事情:

enter image description here

阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

这就是它的出现方式

-Promise - let this is ajax call,
  - then() - now this allows you to work on the output you received from first promise
     - then() - now if you want to work on the output of second promise which return by then(first) 
       - then - another promise allows to wok on ouput of third

所以它有点链接......继续......你完成它