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
setValue
callback 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;
});