Javascript setTimeout和带有承诺的语法?
我正在读一本关于javascript的书,其中有一段代码我不懂Javascript setTimeout和带有承诺的语法?,javascript,promise,settimeout,Javascript,Promise,Settimeout,我正在读一本关于javascript的书,其中有一段代码我不懂 setTimeout( () => setTimeout(console.log, 0 , value *2), 1000); 这里到底发生了什么?有两种,我想我只理解其中的一种。我不明白()=>函数在做什么?你能解释一下吗 我相信: setTimeout(console.log, 0 , value *2) 它在0毫秒后将参数“value*2”传递给函数/方法控制台.log()。我也知道setTimeout()返回tim
setTimeout( () => setTimeout(console.log, 0 , value *2), 1000);
这里到底发生了什么?有两种,我想我只理解其中的一种。我不明白()=>函数在做什么?你能解释一下吗
我相信:
setTimeout(console.log, 0 , value *2)
它在0毫秒后将参数“value*2”传递给函数/方法控制台.log()。我也知道setTimeout()返回timeoutId
其余的我不知道
我看到与以下代码类似的内容:
let p1 = new Promise((resolve, reject) => resolve());
setTimeout(console.log, 0, p1); //Promise <resolved>
let p1=新承诺((解析,拒绝)=>resolve());
setTimeout(console.log,0,p1)//允诺
我也不明白。setTimeout(()=>setTimeout(console.log,0,value*2),1000)代码>将超时设置为。。。设置一个超时。因此,当外部超时在1秒后结束后,调用内部函数(()=>{…}
是一个箭头函数,您现在可以将其理解为function(){…}
)。此函数设置另一个延迟为0的超时,然后调用console.log,将值*2
作为参数传递。因此,1秒后,value*2
被记录到控制台
对于承诺代码,行让p1=新承诺((解析,拒绝)=>resolve())代码>创建可立即解决的承诺。因此,在下一行,当promise被记录到控制台时,它会显示promise
与
setTimeout(function() { console.log(value *2) }, 0)
所以
表示设置一秒的超时,这将设置另一个0秒的超时,并打印value*2
let p1 = new Promise((resolve, reject) => resolve());
setTimeout(console.log, 0, p1);
表示在0秒后打印承诺p1
,这是一个箭头函数。因此,这是一个setTimeout
,它需要1秒的时间来启动内的箭头函数,它返回另一个setTimeout
(因为没有{}
),它在0毫秒后将值*2
传递给它,然后启动console.log
。这是家庭作业吗?我这样问是因为,除了教育性的解释,这是毫无意义的代码——没有理由这样做。使用单个setTimeout()
可以得到相同的结果。哦,我应该声明setTimeout
确实返回timeoutID
,但它会根据第二个参数的毫秒(异步)触发传递给第一个参数的函数。所有附加参数都会传递给函数参数。
setTimeout( () => setTimeout(console.log, 0 , value *2), 1000);
let p1 = new Promise((resolve, reject) => resolve());
setTimeout(console.log, 0, p1);