cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Bagaimana untuk memanggil berbilang perkhidmatan pada masa yang sama dalam angularjs?

Dua perkhidmatan ditakrifkan dalam projek, dapatkan task dan project, bagaimana jika kita mendapatkan data mereka bersama-sama dalam pengawal dan kemudian menetapkan nilai Pada masa ini, saya menggunakan

?
jstaskService.get({id:id},function(data1){
    //...
    projectService.get({id:id},function(data2){
        //里面赋值的操作很长
        ...
    })
})

Bolehkah anda beritahu saya cara menulis kaedah $q saya akan menggunakan operasi pemerolehan data ini di banyak tempat Bagaimana saya boleh menggunakannya semula

某草草某草草2823 hari yang lalu625

membalas semua(3)saya akan balas

  • 滿天的星座

    滿天的星座2017-05-15 16:54:24

    Saya menulisnya mengikut permintaan anda, anda boleh lihat kod di bawah:

    javascriptmyApp.controller("MyController", ["$q", "taskService", "projectService", function($q, taskService, projectService){
        var deferred = $q.defer();
        var promise = deferred.promise;
    
        deferred.resolve(
            // 获取你要处理的对象
            var result = yourMethod.get({id: id});
        );
        deferred.reject(
            // 获取不到是打印错误
        )
    
        promise.then(function(result){
            // 如果经过taskService处理的数据还需要projectService进行处理的话,返回这个结果
            var obj = taskService.func(result);
            return obj;
        },function(error){ 
            // 错误处理
        })
            .then(function(result){
            // 用projectService处理获取到的对象
            projectService.func(result);
        },function(error){
            // 错误处理
        });
    }]);
    

    Jika anda ingin menggunakannya semula, anda boleh menganggap semuanya sebagai perkhidmatan Memandangkan saya tidak tahu kod khusus anda, sukar untuk menyatakannya.

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-15 16:54:24

    Anda boleh menambah kaedah dalam perkhidmatan untuk mendapatkan dua kaedah pada masa yang sama, contohnya:

    js// someService 中 伪代码
    someService.getAll = function(id) {
      var pmo = $q.all([taskService.get({id:id}), projectService.get({id:id})]);
      // 根据情况,可以写下边的代码,也可以直接返回这个pro
      pmo.then(....)
    }
    

    balas
    0
  • 怪我咯

    怪我咯2017-05-15 16:54:24

    taskService.sub1 = function(post_data, callback) {
        projectService.get(post_data, function(rsp){
            if(angular.isFunction(callback)) {
                callback(rsp);
            }
        }
    }
    
    taskService.sub1({ id : 1 }, function(rsp){
        //里面赋值的操作很长
    });
    

    balas
    0
  • Batalbalas