破滅のピラミッドを回避しながら、JS Promises を使用してチェーン 2 JQuery 非同期呼び出しを行うにはどうすればよいですか? 次のように、「JQuery」プロミスを実際のプロミスに変換できることを知っています。
Promise.resolve($.getJSON(url, params));
1 つの約束だけを待ちたい場合は、次のようにすることができます。
Promise.resolve($.getJSON(url1, params1))
.then(function(result){
// do stuff
});
2 つの異なる ajax 呼び出しが行われるのを待ちたい場合は、次のようにします。
Promise.all(
[
Promise.resolve($.getJSON(url1, params1)),
Promise.resolve($.getJSON(url2, params2))
]).then(function(results_array){
// do stuff
});
ただし、ある呼び出しを別の呼び出しの後にしたい場合、これは機能しません。
Promise.resolve($.getJSON(url1, params1))
.then(function(result){
//do stuff
return Promise.resolve($.getJSON(url2, params2));
}).then(function(result){
//result is a promise, not the results from the second call to getJSON()...
//and it doesn't even wait for the second call to finish.
//result.then() is just going to bring me further into the pyramid of doom :(
});
どういうわけか、「do stuff」関数で構築された約束で .then() を呼び出したいと思います。これを行うための慣用的な方法は何ですか?