У меня 3 потока. gradingResult
и contextId
зависят от studentResponse
. Мне нужно запустить событие и только одно событие (в противном случае это тривиально), когда все 3 имеют последние значения.
Я пробовал #combineTemplate и #sampledBy studentResponse
. К сожалению, я всегда вижу неправильные данные --- gradingResult
и contextId
имеют старые значения в объединенном шаблоне. Как я могу дождаться, пока все потоки будут иметь последние значения?
Код показан ниже:
var studentResponse = new Bacon.Bus();
var gradingResult = new Bacon.Bus();
var contextId = new Bacon.Bus();
studentResponse.onValue(function(f) {
gradingResult.push(f);
contextId.push(f);
});
Bacon.combineTemplate({
studentResponse: studentResponse,
gradingResult: gradingResult,
contextId: contextId
}).sampledBy(studentResponse)
.onValue(function(t) {
console.log(t);
});
studentResponse.push(1);
studentResponse.push(2);
studentResponse.push(3);
Ссылка на jsfiddle: https://jsfiddle.net/3o4c9sm8/1/
ОБНОВЛЕНИЕ: это надуманный пример. В реальном коде gradingResult — это запрос ajax. И gradingResult, и contextId зависят от времени от studentResponse.