angular.js - Bagaimana untuk memanggil berbilang perkhidmatan pada masa yang sama dalam angularjs?
某草草
某草草 2017-05-15 16:52:24
0
3
615

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

某草草
某草草

membalas semua(3)
滿天的星座

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.

伊谢尔伦

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(....)
}
刘奇
taskService.sub1 = function(post_data, callback) {
    projectService.get(post_data, function(rsp){
        if(angular.isFunction(callback)) {
            callback(rsp);
        }
    }
}

taskService.sub1({ id : 1 }, function(rsp){
    //里面赋值的操作很长
});
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan