Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs+;允诺_Javascript_Angularjs_Promise_Factory_Angular Promise - Fatal编程技术网

Javascript Angularjs+;允诺

Javascript Angularjs+;允诺,javascript,angularjs,promise,factory,angular-promise,Javascript,Angularjs,Promise,Factory,Angular Promise,我使用的是Angularjs,我在工厂方法中有两个api。我试着一个接一个地访问这两种方法。但它不起作用 我们需要先打印test1,然后打印test2 控制器代码: app.controlle("Test").function($scope, factoryMethod) { factoryMethod.test1().then(function(data) { console.log(data); console.log("test1");

我使用的是Angularjs,我在工厂方法中有两个api。我试着一个接一个地访问这两种方法。但它不起作用

我们需要先打印test1,然后打印test2

控制器代码:

app.controlle("Test").function($scope, factoryMethod) {
    factoryMethod.test1().then(function(data) {

        console.log(data);
        console.log("test1");

    }).then(factoryMethod.test2().then(function(data) {
        console.log(data);
        console.log("test2");

    })).catch(function(data) {
        alert(data);
    });
}
工厂代码:

app.factory("factoryMethod", function (){
    //code for test1 
    //code for test2
});
当前,控制台日志按以下顺序打印: 1.测试2 2.测试1


预期test1和test2都会出现

可以这样做。看看这个片段

app.controlle("Test").function($scope, factoryMethod) {
    factoryMethod.test1().then(function(data) {
        console.log(data);
        console.log("test1");
        factoryMethod.test2().then(function(data) {
            console.log(data);
            console.log("test2");
        });
    }).catch(function(data) {
        alert(data);
    });
}
var-app=angular.module('myapp',[]);
app.factory(“factoryMethod”,['$q',函数($q){
var test1=函数(){
var deferred=$q.deferred();
延期。解决(“测试1”);
回报。承诺;
}
var test2=函数(){
var deferred=$q.deferred();
延期。解决(“测试2”);
回报。承诺;
}
返回{
test1:test1,
test2:test2
}
}]);
应用控制器(“测试”,功能($scope,factoryMethod){
var promise=factoryMethod.test1();
promise.then(函数(数据){
控制台日志(数据);
factoryMethod.test2().then(函数(数据){
控制台日志(数据);
},函数(错误){
日志(“来自测试2的错误”);
})
},函数(错误){
日志(“来自测试1的错误”)
})
});


将整个
factoryMethod.test2()。然后(函数(数据){…})
移动到第一个回调函数中。如何获得test1函数的响应?请帮助meSorry,我的问题是控制器如何处理错误?请看,我已经更新了我的代码片段,并在控制器中处理了错误。
app.controlle("Test").function($scope, factoryMethod) {
    var myData = factoryMethod.test1().then(function(data) {

        // Return data from factoryMethod1
        return data;

        // Or return the data from factoryMethod2 (remove the return statement above if you want this
        return factoryMethod.test2().then(function(data) {

            return data;
        });
    }).catch(function(data) {
        alert(data);
    });
}