Я использую библиотеку обещаний Bluebird в проекте node.js. У меня есть две операции, которые возвращают обещания, и я хочу знать, когда обе они будут выполнены, разрешены или отклонены, и мне нужны возвращаемые значения от обоих. Я читаю содержимое нескольких файлов, и некоторые из файлов могут не существовать, и это нормальное условие, поэтому, хотя fs.readFileAsync()
завершится ошибкой, если файл не существует, мне все равно нужны результаты другой операции чтения.
Promise.all(p1, p2)
отклонит, если p1 или p2 отклонятся, и я не думаю, что обязательно получу данные от другого.
Какая из всех других операций Bluebird (.some()
, .any()
, .settle()
и т. д.) больше всего подходит для этой ситуации? И как данные передаются обратно, чтобы вы могли сказать, какие из них были успешными, а какие нет?
fs.readFileSync
вместо того, чтобы просто использоватьfs.readFile
? - person Mike 'Pomax' Kamermans   schedule 22.09.2014fs.readFileAsync
, который возвращает обещание (это обещанная версияfs.readFile
, а не версия обратного вызова) и является асинхронным. Это отличается отfs.readFileSync
, который является синхронным (не использует обратные вызовы или промисы). Я использую промисы, потому что с ними намного проще правильно обрабатывать ошибки, и когда вы ожидаете выполнения нескольких асинхронных действий, они намного проще. - person jfriend00   schedule 22.09.2014