等待函数执行后再继续

Wait for function to execute before continuing

本文关键字:再继续 执行 函数 等待      更新时间:2023-09-26

我是promise的新手,但在继续之前,我正在尝试执行一个函数(返回一个数字)

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反模式。在您的情况下,您可以从函数中只使用return myNumber.get();

var whatNumber = function(){
 return myNumber.get();
}

或者,如果您需要从结果中返回特定属性:

var whatNumber = function(){
 return myNumber.get().then(function(result) {
   return result.data;
 });
}

如果你想使用反模式方法(应该避免),那么你需要解析promise并传递参数:

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;
}