JavaScript обещает внутри массива - PullRequest
0 голосов
/ 26 сентября 2018

Я работаю над простой задачей, в которой у меня есть массив форм, таких как квадрат и прямоугольник, и размеры его в виде другого массива передаются в качестве параметра в функцию с именем 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]);
            }
        );
}

1 Ответ

0 голосов
/ 26 сентября 2018

Перепишите вашу вторую функцию:

// 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...