在继续之前等待函数执行
Wait for function to execute before continuing
我是 promises 的新手,但我试图让一个函数(returns 一个数字)在继续之前执行。我已经尝试了以下和 none 工作:
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;
});
}
有人知道我做错了什么吗?
您应该了解 deffered antipattern 在您的情况下,您可以 return myNumber.get();
来自函数:
var whatNumber = function(){
return myNumber.get();
}
或者,如果您需要 return 具体 属性 结果:
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);
});
你很接近,只是你的决心在我看来是错误的。您需要解决您计划使用(数据)的价值
var whatNumber = function(){
var defer = $q.defer();
myNumber.get().then(function(response){
defer.resolve(response.data)
});
return defer.promise;
}
我是 promises 的新手,但我试图让一个函数(returns 一个数字)在继续之前执行。我已经尝试了以下和 none 工作:
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;
});
}
有人知道我做错了什么吗?
您应该了解 deffered antipattern 在您的情况下,您可以 return myNumber.get();
来自函数:
var whatNumber = function(){
return myNumber.get();
}
或者,如果您需要 return 具体 属性 结果:
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);
});
你很接近,只是你的决心在我看来是错误的。您需要解决您计划使用(数据)的价值
var whatNumber = function(){
var defer = $q.defer();
myNumber.get().then(function(response){
defer.resolve(response.data)
});
return defer.promise;
}