В спецификации es6 указано, что передача non-callable в promise then
установит обработчик обещания «при выполнении» в «идентификацию». В другом разделе спецификации указано, что "идентификация " - это функция, которая оценивает заданное значение. В соответствии с тем, что говорит спецификация, я предполагаю, что этот код:
Promise.resolve("foo").then(Promise.resolve("bar")).then(v => console.log(v))
быть равным этому коду:
Promise.resolve("foo").then(v => Promise.resolve("bar")).then(v => console.log(v))
Но если оба примера кода выполняются в последней версии Chrome или Firefox, первый выводит «foo», а второй выводит «bar». Где я неправильно понял спецификацию?
then
(ваш первый пример) и передачу функции, которая возвращает обещание (ваш второй пример). Первый ничего не делает согласно спецификации, так какthen
игнорирует все нефункциональные параметры. - person   schedule 23.01.2016