async
Create a compute that can set its value after the computed function has been called.
compute.async(initialValue, computed(currentValue, setValue(newValue) )
Parameters
- The
{*}:initial value of the compute.
- computed
{asyncComputer(lastSetValue, setVal)}:A function that returns the current value of the compute and can optionally later call its
setValuecallback to update the value.
Returns
{compute(newVal)}:
Returns a compute, but a compute that will possibly not have the correct value unless it is bound to.
Use
The following compute is a live list of todos for a given
userId. todos value would alternate between null and a Todo.List as userId changes.
var userId = compute(5)
var todos = compute.async(null, function(oldTodoList, setValue){
Todo.findAll({ userId: userId() }, function(todos){
setValue(todos)
});
return null;
});
The following replaces the list in place:
var userId = compute(5)
var todos = compute.async(new Todo.List(), function(todoList, setValue){
todoList.replace( Todo.findAll({ userId: userId() })
return todoList;
});