私は es6 の約束を試して連鎖させていますが、私の例がうまくいかない理由がわかりません。
printInterval() と setInterval() を複数回連鎖させ、_interval が次のように減少することを期待します。
- このメッセージが表示されるまで 3000 ミリ秒待機しました
- 間隔を 2000 に設定
- このメッセージが表示されるまで 2000 ミリ秒待機しました
- 間隔を 1000 に設定
- このメッセージが表示されるまで 1000 ミリ秒待機しました
- 間隔を 500 に設定
- このメッセージが表示されるまで 500 ミリ秒待機しました
しかし、私は次のようになります:
- このメッセージが表示されるまで 3000 ミリ秒待機しました
- 間隔を 2000 に設定
- 間隔を 1000 に設定
- 間隔を 500 に設定
- このメッセージが表示されるまで 500 ミリ秒待機しました
- このメッセージが表示されるまで 500 ミリ秒待機しました
- このメッセージが表示されるまで 500 ミリ秒待機しました
.
function printInterval() {
return new Promise(function(resolve, reject){
setTimeout(function () {
console.log('waited ' + _interval + 'ms to display this message')
resolve(_interval);
}, _interval)
})
}
function setInterval(interval){
return new Promise(function(resolve, reject) {
setTimeout(function () {
console.log('setting interval to ', interval)
_interval = interval;
resolve(_interval);
}, 0);
})
}
var _interval = 3000;
printInterval()
.then(function(){setInterval(2000)})
.then(function(){printInterval()})
.then(function(){setInterval(1000)})
.then(function(){printInterval()})
.then(function(){setInterval(500)})
.then(function(){printInterval()});
ありがとう!