Q链接异步

时间:2013-06-13 20:38:34

标签: javascript asynchronous q

此时我与我的同事有几个关于链接异步承诺的论点。我说它不支持Q,他们说这是但不能给我任何有效的答案。拜托,也许你们可以!

这就是问题:我们有异步!

// Hopefully all can tell that this is just an example fn
function asyncServerRead(url) {
    var deferred = Q.defer();
    $.get(url, function(response) {
        deferred.resolve(response);
    });
    return deferred.promise;
}

现在我们有一些功能依赖于其他功能的响应

// This is how i say it has to be done
function doubleReadParadise(url) {
    var deferred = Q.defer();

    asyncServerRead(url).then(function(responseUrl) {
        asyncServerRead(responseUrl).then(function(response) {
            // .. most bestest operation ever ..
            deferred.resolve(response);
        });
    });

    return deferred.promise;
}

现在我希望不是这样。我希望我能做到这样的事情

asyncServerRead(url).then(function(serverUrl) {
    return asyncServerRead(serverUrl);
}).then(function(response) {
    // .. most bestest operation ever ..
    return response;
});

显然第二个版本不起作用。

我真正要问的是线性异步操作,是否有可能不发展我自己的死亡金字塔?

迈克尔

0 个答案:

没有答案