簡體   English   中英

javascript內的數組答應

[英]javascript promises inside array

我正在做一個簡單的任務,其中有一個正方形和矩形等形狀的數組,並且還有另一個數組的大小作為參數傳遞給名為findAllObjectArea函數。

我想從我的函數findAllObjectArea返回一個findAllObjectArea ,該函數表示我所有對象的區域數組。 同樣在我的函數中,我想返回表示該區域的findObjectArea

我已經創建了下面的模板,但是我正在努力尋找它的正確語法。 你能幫我這個忙嗎?

let findObjectArea = (myobject, sizes) => {
    new Promise(function(resolve, reject) {
        if(myobject== 'square') {
            resolve(sizes[0]*sizes[0]);
        } else if(myobject== 'rectangle') {
            resolve(sizes[0]*sizes[1]);
        }
    }
}

let findAllObjectArea = (objects, all_sizes) => {

        new Promise((resolve, reject) => {
            for(var i=0; i<objects.length; i++) {
                findObjectArea (objects[i], all_sizes[i]);
            }
        );
}

重寫第二個函數:

// Use `const`, you're never gonna change this.
const findAllObjectArea = (objects, all_sizes) => {
  const promises = [];

  // I'm using 'let'. Why use 'var' if you have access to 'let' ;)
  for(let i=0; i < objects.length; i++) {
     promises.push(findObjectArea (objects[i], all_sizes[i]));
  }
  // Now we wait for ALL promises to resolve
  return Promise.all(promises);
}

從您的問題尚不清楚,您想對所有這些操作的結果做什么,所以我假設您想返回一個包含所有結果的數組。

只是為了好玩,這是具有更現代的循環原語的另一種選擇:

// Use `const`, you're never gonna change this.
const findAllObjectArea = (objects, all_sizes) => {
  const promises = [];

  // I'm using 'let'. Why use 'var' if you have access to 'let' ;)
  for(const [index, obj] of objects.entries()) {

     promises.push(findObjectArea (obj, all_sizes[index]));

  }
  // Now we wait for ALL promises to resolve
  return Promise.all(promises);
}

暫無
暫無

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

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