javascript – multiple`.then()`在单个angularjs promise – 所有使用_original_数据

我正在写一个依赖promises的angularjs应用程序,虽然它的工作,我想知道我是否能更好地做到这一点。

在代码的开头,我创建一个promise,去获取一些数据。当这样做,我想运行几个函数都使用这些数据。函数附加在应用程序的不相关部分,所以我不知道它们附加到promise的顺序。他们不需要按顺序完成。

app.service("Fetch", function ($q){
    return function() {
        var def = $q.defer();
        somelibrary.asynccall(function(error, data){ //callback
            if (error) def.reject(error);
            else def.resolve(data);
        });
        return def.promise;
    };
});

app.controller("ctrl", function ($scope, Fetch) {
    var prom = Fetch();

    //somewhere:
    prom.then(function(data){$scope.var1 = data["VAR1"];});
    //somewhere else:
    prom.then(function(data){$scope.var2 = data["VAR2"]});
});

这里的主要缺点是只有当前面的步骤完成时才执行较晚的步骤,这在这里不是必需的。

另外,我需要在每个函数(数据){…}内部添加返回数据,否则以下然后()没有可用的数据。

有没有其他方法这样做,更适合这种情况?

编辑:由@ jfriend00提到,我错了;事实上,2个函数同时运行,只要promise被成功解析,它们就不会被链接,因此不会相互依赖。谢谢你的帮助

把我的意见变成一个答案,因为它似乎澄清了这个问题:

使用你的模式,同一个promise上的两个.then()调用将在promise被解决时一个接一个地被调用。第二个.then()只与原始的promise有关,而与第一个.then()发生的没有关系。

这些不是链接的,因此第二个.then()没有依赖于从第一个.then()返回的内容,并且两者都将传递相同的数据。他们只是同样承诺的多个观察者,比如两个事件处理程序监听相同的事件。

在相同promise上的两个.then()处理程序将按照它们附加到promise的顺序被调用,并且都将传递相同的数据。

看到这两个答案:

Is there a difference between promise.then.then vs promise.then; promise.then

Understanding javascript promises; stacks and chaining

关于链接p.then(…)的更多信息然后(…)与分支p.then(…); p …(…)。

http://stackoverflow.com/questions/25345520/multiple-thens-on-single-angularjs-promise-all-use-original-data

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – multiple`.then()`在单个angularjs promise – 所有使用_original_数据