Мне нужно реализовать версию Promise.all
, которая возьмет массив обещаний и вернет результат, как это обычно бывает, плюс также решает все обещания, так же как делает это внутри библиотека Bluebird
, за исключением того, что я не могу использовать Bluebird
, и вам приходится полагаться только на стандартный протокол обещаний.Внедрение сочетания Promise.all и Promise.settle
Будет ли это ужасно сложно реализовать? Или это слишком много, чтобы спросить здесь о том, как его реализовать? Я действительно надеюсь, что нет, поэтому я прошу, если кто-нибудь, возможно, осуществил это раньше, поделиться идеей о том, как это сделать правильно.
Предпосылка для этого заключается в возможности использовать его в транзакции базы данных, которая должна выполнить commit
/rollback
после завершения вызова, и у него не может быть никаких обещаний, которые все еще пытаются решить за пределами транзакционного вызова.
EDIT: Ссылка, предоставленная на другой вопрос, очень полезна, но это не полный ответ на заданный вопрос. Общий settle
- отличный пример, который помог многим, но его необходимо было упростить и объединить в логику all
, чтобы соответствовать сценарию транзакций, описанному ранее.
Код, предоставленный именно для того, что вы просите здесь (во втором примере кода с именем 'promSettle()'): [Подождите, пока несколько обещаний будут отклонены] (http://stackoverflow.com/questions/32241391/wait -дль многодисковых обещания-к-быть отвергнуты). Помечен этот вопрос в качестве дубликата. – jfriend00
Это была очень полезная ссылка, хотя и предлагала только половину ответа. –
Какая половина отсутствует. Он выполняет все обещания и рассказывает вам, когда все это делается. – jfriend00