Javascript Angularjs+;允诺
我使用的是Angularjs,我在工厂方法中有两个api。我试着一个接一个地访问这两种方法。但它不起作用 我们需要先打印test1,然后打印test2 控制器代码: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");
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);
});
}