Я использую обещания ES6, идея этой функции состоит в том, чтобы перебирать массив ссылок, и для каждой ссылки искать изображение и останавливаться, как только изображение найдено.
В этом случае функции, которую я написал, самое быстрое обещание разрешается, а другие продолжают выполняться, поэтому я хочу остановить выполнение оставшихся обещаний, как только разрешится первое.
scrapImage(links) {
let promises = links.map((l) => getImageUrlAsync(l));
return Promise.race(promises);
}
getImageUrlAsync()
выполняет большую работу для каждого элемента массива, не разумно ли прекращать выполнение других обещаний для повышения производительности, как только я получу свой результат? - person zianwar   schedule 14.03.2016getImageUrlAsync
является вызовом ajax, запрос уже отправлен, и сервер начал работать над ним. Вы можете отменить запрос, но это не помешает серверу продолжить работу над ним. Если на стороне сервера есть большие накладные расходы при обработке запроса, который вы хотите отменить, вам понадобится какой-то специальный механизм, чтобы предупредить сервер о прекращении обработки. В общем, кажется, не стоит заморачиваться, за исключением особых ситуаций. - person   schedule 14.03.2016