我正在试验 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()});
谢谢你!