1

在这一点上,我与我的同事就链接异步承诺有几个争论。我说它不被 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;
});

显然,第二个版本行不通。

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

爱,

迈克尔

4

0 回答 0