Чтобы добавить к правильный ответ Патрика Робертса , вы можете вернуть Обещание из then
, а функция then
будет ждать Обещание, прежде чем продолжить .Однако для этого вам нужно передать функцию then
, которая возвращает Обещание .
Таким образом, если ваша строка будет выглядеть следующим образом:
p.then(() => q).then(function(data){
console.log(data);
});
Или без лямбд:
p.then(function() { return q; }).then(function(data){
console.log(data);
});
Тогда вы увидите результат:
First Promise (at 4th second)
Yo (at 8th second)
Second Promise (at 8th second)
РЕДАКТИРОВАТЬ : К вашей точке зрения о Spotify, большинство вызовов функции, которую вы просматриваете _runOnDevice
, имеют явно связанные функции в качестве второго и третьего аргументов.
Большинство имен аргументов являютсяТо же самое (t
, e
, n
), несмотря на их позиции, что делает его немного запутанным.Я предполагаю, что эти функции передаются async
в значительной степени с использованием лямбд.
Как указал Патрик в комментариях, по крайней мере один вызов _runOnDevice
, кажется, принимает Promise в качестве второго параметра.Это похоже на ошибку.
