• function

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

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


  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 a compute, but a compute that will possibly not have the correct value unless it is bound to.


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){
  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;