加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在角度2中相当于$q.when

发布时间:2020-12-17 17:02:49 所属栏目:安全 来源:网络整理
导读:我习惯使用角度为1的$q.我正在迁移到角度2. 是否有提供.when()方法的等价物? 例如,我需要迁移这个: .service('updateProDB',[ '$rootScope','connectionStatus','$q','storageService','sendToServer','$ionicPopup',function ($rootScope,connectionStatu
我习惯使用角度为1的$q.我正在迁移到角度2.

是否有提供.when()方法的等价物?

例如,我需要迁移这个:

.service('updateProDB',[
            '$rootScope','connectionStatus','$q','storageService','sendToServer','$ionicPopup',function ($rootScope,connectionStatus,$q,storageService,sendToServer,$ionicPopup) {
                'use strict';

                var dbReadyDeferred = $q.defer(),prodata = [],prodataFieldNames = [];

            this.get = function () {
                var debugOptionUseLocalDB = 0,serverAttempts = 0;

                if (debugOptionUseLocalDB) {
                    return fallbackToLocalDBfileOrLocalStorageDB();
                }
                if (connectionStatus.f() === 'online') {
                    console.log("Fetching DB from the server:");
                    return getDBfileXHR(dbUrl(),serverAttempts)
                            .then(function () { // success
                                console.log('-normal XHR request succeeded.');
                                return dbReadyDeferred.promise;
                            })
                            .catch(function (){

解决方法

你可以做同等的,用:

Promise.resolve(promise).then

这基本上不区分承诺和价值观.

是的,你可以用同样的方式实例化q,但使用新的Promise()而不是$q()

let promise = Promise((resolve,reject) => {
    if (/* some async task */) {
       resolve('Success!');
    } else {
        reject('Oops... something went wrong');
    }
});

let promise = $q((resolve,reject) => {
    if (/* some async task */) {
       resolve('Success!');
    } else {
       reject('Oops... something went wrong');
    }
});

应该是等价的

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读