q.所有的功能都不能像我希望的那样工作

q.all function not working as I want it too

本文关键字:我希望 工作 都不能 功能      更新时间:2023-12-19

我有以下代码:

        function start() {
            var function = this.buildUpModels;
            console.log('async wordt gestart');
            $q.all([Timeline.updateEvents(),Timeline.updateTimeslots(),Sponsors.updateSponsors(),Biography.updateBiography()]).then( function (rv){               
                console.log('async is done');
                function ();
            });               
            window.localStorage.setItem('check', 'done');
            window.localStorage.setItem('planning', '[1,2]');
        } 
        function buildUpModels() {
            console.log('start buildUpModels')             
            Biography.buildObject();
            Timeline.buildObject();
        } 

以下是异步更新功能之一(所有功能的编码相似):

 function updateBiography() {
            return $http.get("pathToData")
                        .then(function (resp) {
                            console.log( "update bio")
                            window.localStorage.setItem('biography', resp.data);
                            window.localStorage.setItem('biographyTimeStamp', Date.now());
                        }, function (err) {
                            console.log('ERR', err);
                        });
        }

据我所知,console.log("async is done")和function()语句都应该在q.all()中的所有promise都被解析后调用。然而,在解析异步函数之前会调用这些函数。我到底做错了什么?

我想我已经找到了答案!这个问题的出现纯粹是因为我在离子实验室进行测试。

-设备nr.1找到一个空的本地存储并填充它。然后它开始构建对象。(显然,它在等待结果)
-然而,设备nr.2找到了一个完整的本地存储(因为其他电话正在填充它),然后直接执行此.buildUpModels(因为如果本地存储不为空,则不会通过异步函数的回调调用它)。

提示:使用离子实验室等测试工具时,请注意包含本地存储的测试代码