在这一点上,我与我的同事就链接异步承诺有几个争论。我说它不被 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;
});
显然,第二个版本行不通。
我真正要问的是线性异步操作,是否有可能不发展我自己的死亡金字塔?
爱,
迈克尔