Stop Axios Promise Chain

Я согласен с ответом, предложенным в настоящее время fedorqui в контексте заданного в настоящее время вопроса. Ниже дается только предоставление более общих ответов.

Еще один общий подход (для bash 4.0 или newer) заключается в том, чтобы сохранить ваши пары в ассоциативном массиве:

declare -A pairs=( [4_1]=4_2 [5_1]=5_2 [6_1]=6_2 [7_1]=7_2 [8_1]=8_2 )
for i in "${!pairs[@]}"; do
  j=${pairs[$i]}
  paste "$i.txt" "$j.txt" >"${i}.${j}.txt"
done

Другой (совместимый со старыми версиями bash) заключается в использовании более одного обычного массива:

is=( 4_1 5_1 6_1 7_1 8_1 )
js=( 4_2 5_2 6_2 7_2 8_2 )
for idx in "${!is[@]}"; do
  i=${is[$idx]}
  j=${js[$idx]}
  paste "$i.txt" "$j.txt" >"$i.$j.txt"
done
0
задан Camilo Terevinto 13 July 2018 в 17:51
поделиться

2 ответа

.catch ловит любые предыдущие части цепочки обещаний и оставляет после .then s без функции отклонения после .catch uncatched (если нет другого .catch). Это означает, что ваша цепочка не работает, вероятно, в одном из .then, когда .catch находится в конце цепи и, вероятно, выдает ошибку обещания на консоль, когда вы оставили ее невключенным (.catch сразу после .post).

Просто удалите (временно) .catch и узнайте, в какой части он выходит из строя - из журнала консоли.

1
ответ дан bigless 17 August 2018 в 12:19
поделиться

После устранения обещания catch используется, чтобы поймать любую ошибку из любого блока then. Поэтому, если вы поместите блок catch после then, будет обнаружена первая ошибка, из которой могут возникнуть предыдущие блоки then. Таким образом, использование catch, в котором вы использовали, не имеет смысла, также первый блок then получает возвращаемое значение из обещания после его разрешения.

В блоке catch:

do console.log(error), чтобы узнать, какую ошибку вы получите.

Также для извлечения значений из разрешенных функций Promise используйте eventlisteners (чтобы разбить цепочку).

0
ответ дан Prajval M 17 August 2018 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: