此时我与我的同事有几个关于链接异步承诺的论点。我说它不支持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;
});
显然第二个版本不起作用。
我真正要问的是线性异步操作,是否有可能不发展我自己的死亡金字塔?
爱
迈克尔