簡體   English   中英

解決承諾后返回數組

[英]Return array after resolve promise

我正在嘗試解決我的問題,但是我沒有更多的想法了。 我想創建函數以根據類型變量返回值數組。

我想檢查發送給函數的參數是字符串數組還是Webelements數組,並且我想將此數組返回給其他函數進行排序。

這是我的代碼:

  private static returnByType(unSortedElements) {
      var i = 0;
      var unSorted = [];
      if (typeof unSortedElements[0] === 'string') {
          unSorted = unSortedElements;
          return unSorted;
      } else {
          return unSortedElements.each((eachName) => {
              eachName.getText().then((name) => {
                  unSorted[i] = name;
                  i++;
              })
          })

      }

  }

如果我將字符串數組傳遞給此函數,它將返回帶有此字符串的數組,但是當我傳遞給那里的Webelements列表時,我得到一個空數組(在else塊中)。 我應該如何從else塊返回unSorted?

如果您正在處理承諾,那么您就不能只返回價值,這永遠是一個承諾。 您的代碼可能應該是這樣的:

private static returnByType(unSortedElements) {
  var i = 0;
  var unSorted = [];
  if (typeof unSortedElements[0] === 'string') {
      unSorted = unSortedElements;
      // Promise.resolve(unSorted) to unify with else
      return Promise.resolve(unSorted);
  } else {
      // return type will be Promise<[]>
      return Promise.all(unSortedElements.map((eachName) => eachName.getText()));
  }

}

現在,該函數的返回類型為Promise<[]> 然后您可以像這樣使用它:

returnByType(args).then((unsorted) => ...);
  • 有關Promise.all()請參閱文檔
  • 有關Promise.resolve()請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM