use*_*723 2 javascript settimeout promise
在下面的代码中,我预计会有两个4秒的延迟.但是如果你运行代码,你会看到它立即执行.显然我不明白一些非常基本的东西,或者我是一个我看不到的愚蠢错误.
function calculatesomething(resolve) {
console.log("calculating");
setTimeout(results(resolve,3),4000);
}
var answer=0;
function results(resolve,n) {
console.log("got results");
answer=1;
resolve(answer+n);
}
function doingstuff() {
console.log("starting");
var promise1 = new Promise(function(resolve) {
setTimeout(calculatesomething(resolve),4000);
});
promise1.then(function(value) {
console.log("done: "+value);
});
console.log("regular execution");
}
doingstuff();Run Code Online (Sandbox Code Playgroud)
(抱歉这里有缩进.我不知道为什么它不尊重标签.)
最根本的是:
setTimeout(results(resolve,3),4000);
Run Code Online (Sandbox Code Playgroud)
你不需要直接调用函数并传递返回的值,而是传递函数引用:
setTimeout(results, 4000, /*args:*/ resolve, 4);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |