Javascript 是否可以使用D.O.H测试异步函数调用序列
我正在尝试使用编写一个测试,该测试将检查以下事件序列:Javascript 是否可以使用D.O.H测试异步函数调用序列,javascript,testing,dojo,doh,Javascript,Testing,Dojo,Doh,我正在尝试使用编写一个测试,该测试将检查以下事件序列: 使用用户A登录(异步) 注销(同步) 使用用户A登录(异步) 第二个回调函数的返回值是另一个doh.Deferred对象。我的印象是d的回调链将等待d2,但它不会。测试在调用d2.callback之前完成 我哪里出了问题 有人知道我有更好的方法来测试这种行为吗 function test() { var d = new doh.Deferred(); d.addCallback(function() {
function test() {
var d = new doh.Deferred();
d.addCallback(function() {
Comm.logout(); /* synchronus */
try {
// check with doh.t and doh.is
return true;
} catch (e) {
d.errback(e);
}
});
d.addCallback(function() {
var d2 = new dojo.Deferred();
/* asynchronus - third parameter is a callback */
Comm.login('alex', 'asdf', function(result, msg) {
try {
// check with doh.t and doh.is
d2.callback(true);
} catch (e) {
d2.errback(e);
}
});
return d2; // returning doh.Defferred -- expect d to wait for d2.callback
});
/* asynchronus - third parameter is a callback */
Comm.login('larry', '123', function (result, msg) {
try {
// check with doh.t and doh.is
d.callback(true);
} catch (e) {
d.errback(e);
}
});
return d;
}
这很有效。d2的范围就是问题所在
function test() {
var d = new doh.Deferred();
var d2 = new doh.Deferred();
d.addCallback(function() {
Comm.logout(); /* synchronus */
try {
// check with doh.t and doh.is
return true;
} catch (e) {
d.errback(e);
}
});
d.addCallback(function() {
/* asynchronus - third parameter is a callback */
Comm.login('alex', 'asdf', function(result, msg) {
try {
// check with doh.t and doh.is
d2.callback(true);
} catch (e) {
d2.errback(e);
}
});
return d2; // returning doh.Deferred -- waits for d2.callback
});
/* asynchronus - third parameter is a callback */
Comm.login('larry', '123', function (result, msg) {
try {
// check with doh.t and doh.is
d.callback(true);
} catch (e) {
d.errback(e);
}
});
return d;
}