我有以下 durendal 代码:
var variable = ko.observable("");
function activate(){
return myModel.doSomething(variable);
}
doSomething定义如下:
function doSomething(variable){
if(someCondition)
return $.ajax(...).success(function(data){variable(data)});
variable(defaultValue);
return defaultValue;
}
someCondition==true当使用 ajax 调用结果初始化变量时,此代码工作正常。当someCondition==falseactivate 方法返回而变量未初始化时。
从我在文档中读到的内容来看,快乐的道路是有效的,因为 ajax 调用返回了一个承诺,但不是这种else情况。
我试过这个:
function activate(){
return myModel.doSomething(variable).promise();
}
但我收到一个错误,说可观察对象没有promise有意义的方法。
问题
如何让else子句像 ajax 调用一样返回一个承诺?