簡體   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