代码之家  ›  专栏  ›  技术社区  ›  Lawrence Barsanti

是否可以使用D.O.H测试异步函数调用序列

  •  0
  • Lawrence Barsanti  · 技术社区  · 17 年前

    doh.Deferred 编写一个测试,检查以下事件序列:

    1. 注销(同步)

    我哪里做错了?

    有人知道我测试这种行为的更好方法吗?

    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;
    }
    
    1 回复  |  直到 17 年前
        1
  •  0
  •   Lawrence Barsanti    17 年前

    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;
    }