我是承诺的新手,但我试图在继续之前获得一个函数(返回一个数字)来执行。我已经尝试了以下但没有工作:
var whatNumber = function(){
var defer = $q.defer();
myNumber.get().then(defer.resolve);
return defer.promise;
}
我也尝试过:
var whatNumber = function(){
var defer = $q.defer();
defer.resolve( myNumber.get());
return defer.promise;
}
最后我毫无承诺地尝试了它:
var whatNumber = function(){
myNumber.get().then(function(result) {
return result;
});
}
任何人都有任何想法我做错了什么?
答案 0 :(得分:3)
你应该阅读deffered antipattern在你的情况下你可以从函数中return myNumber.get();
:
var whatNumber = function(){
return myNumber.get();
}
或者,如果您需要从结果中返回特定属性:
var whatNumber = function(){
return myNumber.get().then(function(result) {
return result.data;
});
}
如果你想使用反模式方法(你应该避免),那么你需要解决这个问题并传递参数:
var whatNumber = function(){
var defer = $q.defer();
myNumber.get().then(function(result) {
defer.resolve(result);
});
return defer.promise;
}
whatNumber().then(function(result) {
console.log(result);
});
答案 1 :(得分:2)
你很亲密,你只是从我能看到的不正确的目标。您需要解决您计划使用的值(数据)
var whatNumber = function(){
var defer = $q.defer();
myNumber.get().then(function(response){
defer.resolve(response.data)
});
return defer.promise;
}