2014-10-15 2 views
0

Я использую RSVP.js lib в браузере.Как мне() пообещать?

У меня есть одно обещание applicationReady

У меня есть еще один Promise loadSomeData

У меня есть окончательное обещание, configureUI

Каждый опирается на предыдущее обещание сделать это работа. Как я могу получить эти три обещания в серии? Мне явно чего-то не хватает.

Спасибо!

РЕШЕНИЕ:

Хорошо, вот ответ:

Не работает:

applicationReady 
.then(loadSomeData) 
.then(configureUI) 

ли работа:

applicationReady 
.then(function() { return loadSomeData; }) 
.then(function() { return configureUI; }) 

Существует разница между обещанием и функция, которая возвращает обещание. Bummer, что then() не понимает этого сам. Что такое usecase для этого (обещание)?

ответ

0

Хорошо, вот ответ:

Не работает:

applicationReady 
.then(loadSomeData) // loadSomeData is a promise 
.then(configureUI) // configureUI is a promise 

ли работа:

applicationReady 
.then(function() { return loadSomeData; }) 
.then(function() { return configureUI; }) 

Существует разница между обещанием и функции, которая возвращает обещание.

1

У меня есть одно обещание, у меня есть другое обещание, у меня есть последнее обещание. Каждый полагается на предыдущее обещание сделать это.

Это не имеет никакого смысла. Если у вас есть обещание уже, это означает, что вы запустили все три процесса, будущие результаты которых вы теперь держите в руке. Независимо от того, опирается ли этот процесс на какое-то другое обещание (или нет), вы не в своей ответственности - у вас есть только результаты.

Как я могу получить эти три обещания для запуска в серии?

Вы не можете «выполнить» обещание. Обетование представляет только результат. Вы может однако запустить функцию. Говоря «полагается на предыдущую работу», вы подразумеваете, что результаты предыдущего обещания передаются в функцию для запуска (и создают следующее «зависимое» обещание) в качестве аргумента - и это именно то, что делает .then().

Что такое usecase для этого (обещание)?

Существует нет.Если вы не передаете функцию, then ничего не делает.

Смежные вопросы