我想更全面地了解promises如何在JavaScript中运行并尝试下一个代码:
function delay(timeout) {
return new Promise(function(resolve, reject){
setTimeout(resolve,timeout);
});
}
var promise = delay(10000);
promise.then(alert('after delay'));
我想为JS setTimeout()函数编写一个包装器,我假设在执行此代码后10秒后出现警报,但它立即显示,有人可以解释这里有什么问题吗?
答案 0 :(得分:6)
promise.then(alert('after delay'));
在这里:
alert()
then()
所以承诺并没有立即解决。在结算之前你只需alert
。
您必须将功能传递给then
。
promise.then(alert.bind(window, 'after delay'));
答案 1 :(得分:3)
将function
添加到您的then
声明中:
promise.then(function(){
alert('after delay')
});
答案 2 :(得分:0)
原因由Quentin's answer解释。另一个解决方案是使用箭头功能:
promise.then(() => alert('after delay'));