Итак, я пытаюсь написать программу, запускающую N Promise с потоком в k Promise параллельно. Проблема в том, что при запуске без yield sleep 1 программа запускает 3 параллельных Promise, при этом не выполняя их. С yield sleep 1 всё работает нормально. Так же программа будет работать корректно, если N = k, т.е. если мы хотим запустить все Promise одной пачкой.
Вопрос: почему yield sleep 1 решает проблему? Я понимаю, что уменьшаю количество сравнений в ~1000000 раз с помощью него, но все же непонятно, почему без yield sleep 1 программа не работает
co = require 'co'
Promise = require "bluebird"
in_progress = 0
check_num = 0
checks_list = []
add = (name) ->
console.log "#{name} about to create"
in_progress++
new Promise (resolve, reject) ->
setTimeout () ->
console.log "#{name} completed"
in_progress--
resolve(name)
, 3000
sleep = (t) ->
new Promise (resolve, reject) ->
setTimeout ->
resolve()
, t
run = () -> co ->
while check_num < 5
console.log "in progress: #{in_progress}"
if in_progress < 3
checks_list.push add("n#{check_num++}")
# yield sleep 1
run().then () ->
console.log checks_list
Promise.all checks_list
.then () ->
console.log checks_list
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как задать срок хранения ключа? как предотвратить появление модального окна после закрытия а потом октрытия браузера?
Нужна помощь с jsЕсть таблица, по нажатию кнопки все элементы строки попадают в массив
Реализую транзакцию с подписью трезораНо получаю ошибку о том, что недостаточно средств, хотя на обоих кошельках есть ethereum