繁体   English   中英

等待函数执行后再继续

[英]Wait for function to execute before continuing

我对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;
 });
}

有人有任何想法我在做什么错吗?

您应该阅读有关有差别的反模式的信息,您可以return myNumber.get(); ;。 从函数:

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

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

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

如果要使用antipattern方法(应避免使用),则需要解析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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM