Ответ 1
rallrall дал правильный ответ в своем комментарии: вы не можете
Решение для меня состояло в том, чтобы перепроектировать мой код, чтобы вернуть promises, а затем получающая функция должна оценивать результат по строкам:
function a(){
var option = null;
return mustHaveOption ? store.find("option", 1) : false;
}
}
function b(){
res = a();
if (!res){
res.then(function(option){
// see option here
});
}
}
Другим ключевым решением для меня было использование хеша promises. Один создает массив всех promises, которые должны быть разрешены перед выполнением следующего кода:
Em.RSVP.Promise.all(arrayOfPromises).then(function(results){
//code that must be executed only after all of the promises in arrayOfPromises is resolved
});
Мне потребовалось некоторое время, чтобы обернуть голову вокруг этого асинхронного способа программирования, но как только я сделал что-то очень хорошо.