Вернуть промис или как получить PromiseValue [дубликат]

151
20 мая 2021, 09:20
На этот вопрос уже даны ответы здесь:
Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания (3 ответа)
Закрыт 1 год назад.

Полога, что создаю дубль, но вдруг что-то изменилось) и есть решение вернуть значение примаса PromiseValue?

async function praiceZeb() { 
 
  let client = new XMLHttpRequest(), 
    csvarray = []; 
  client.open('GET', 'xls-test.csv'); 
 
  await new Promise(resolve => { 
    client.onreadystatechange = () => { 
      if (client.readyState == 4 && client.status == 200) { 
        let rows = client.responseText.split('\n'); 
        for (let i = 0; i < rows.length; i++) { 
          csvarray.push(rows[i].split(';')); 
        } 
 
        resolve(csvarray[5][1]); 
      } 
    }; 
    client.send(); 
  }); 
  return csvarray[5][1]; 
}; 
 
console.log(praiceZeb());

Answer 1

Необходимо получить значение из Promise? Чтобы это сделать, тебе необходимо вызвать свою синхронной функцию praiceZeb из другой синхронной функции.

async function praiceZeb() { 
  const promiseValue = new Promise(resolve => { 
    const arryaValue = []; 
    for (let i = 0; i < 10; i++) { 
      arryaValue.push(i); 
    }; 
    resolve(arryaValue); 
  }); 
  return promiseValue; 
}; 
 
(async() => { 
  const result = await praiceZeb(); 
  console.log(result); 
})();

Так как твой console.log выполняется асинхронно.

READ ALSO
Передача аргумента в цепочке из функций

Передача аргумента в цепочке из функций

Мы работаем с API, и чтобы удобно получать и обрабатывать данные, реализовали следующее: создали функцию, которая возвращает объект с методамиИз...

98
Выбор предыдущего элемента, по которому был клик

Выбор предыдущего элемента, по которому был клик

Объясню для ситуации в целомЕсть такой себе фильтр по категориям

98
Зачем этот алгоритм и что он делает?

Зачем этот алгоритм и что он делает?

Есть кусок кода, я не понимаю, зачем он и как работаетПо идее функция getComponentTypeID() возвращает какой-то ID (зависящий от количества вызовов) на 1 больше...

117