async

  • function
2.1
 

Create a compute that can set its value after the computed function has been called.

can.compute.async(initialValue, computed(currentValue, setValue(newValue) )

Parameters

  1. The {*}

    initial value of the compute.

  2. computed {can.compute.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 = can.compute(5)

var todos = can.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 = can.compute(5)

var todos = can.compute.async(new Todo.List(), function(todoList, setValue){
  todoList.replace( Todo.findAll({ userId: userId() })
  return todoList;
});