こちらは、各.then()
の中から次のPromiseオブジェクトを返す方法です。
こちらの方がネストが浅くなり、エラー処理も簡潔になります。
var rosen;
function init() {
rosen = new Rosen("map", {
apiKey: "2jr5nchcswemrfjj67jvjaqu", // アクセスキーはサンプル用です。実際にご利用されるときは書き換えてください。
});
}
// 例4. 直列処理
function btnOnClick() {
var yuurakucho = 23036;
var tokyo = 22828;
var ginza = 22641;
rosen.setStationMarker(yuurakucho).then(function() {
alert("ここは有楽町にマーカーが立った後で実行されます。");
return rosen.setStationMarker(tokyo); // さらにPromiseオブジェクトを返します
}).then(function() {
alert("ここは東京にマーカーが立った後で実行されます。");
return rosen.setStationMarker(ginza); // さらにPromiseオブジェクトを返します
}).then(function() {
alert("ここは銀座にマーカーが立った後で実行されます。");
throw "エラーテスト"; // この例外は捕捉されます
}).catch(function(err) {
alert("エラーが発生しました(エラーテストなので正常です)");
console.log(err);
});
}
window.addEventListener('load', init);