Javascript 如何传递解析值

Javascript 如何传递解析值,javascript,promise,Javascript,Promise,使用此承诺有什么问题 const count\u elems=函数(c){ 常量elems=c.getElementsByTagName('p'); 控制台日志(元素长度); }; 常量处理程序=函数(){ 返回新承诺(功能(解决、拒绝){ const cont=document.getElementById('cont'); const p=document.createElement('p'); 对于(设i=100000;i--;){ cont.appendChild(p.cloneNod

使用此
承诺有什么问题

const count\u elems=函数(c){
常量elems=c.getElementsByTagName('p');
控制台日志(元素长度);
};
常量处理程序=函数(){
返回新承诺(功能(解决、拒绝){
const cont=document.getElementById('cont');
const p=document.createElement('p');
对于(设i=100000;i--;){
cont.appendChild(p.cloneNode());
}
返回解析(续);
})
}
常量测试=函数(){
handler()
.然后(计数元素(c))
.catch(函数(e){console.log(e)});
};
document.getElementById('but')
.addEventListener(“单击”,测试)


单击我
然后
功能中获取
c
,然后进入
计数元素
功能。在
解析
之前删除
返回
,您不需要它

。然后(c=>count\u elems(c))
或只是
。然后(count\u elems)
而不调用函数

const count\u elems=函数(c){
常量elems=c.getElementsByTagName('p');
控制台日志(元素长度);
};
常量处理程序=函数(){
返回新承诺(功能(解决、拒绝){
const cont=document.getElementById('cont');
const p=document.createElement('p');
对于(设i=100000;i--;){
cont.appendChild(p.cloneNode());
}
决议(续);
});
}
常量测试=函数(){
handler()。然后(c=>count_elems(c))
.catch(e=>console.log(e));
};
document.getElementById('but')
.addEventListener(“单击”,测试)


单击我
然后
功能中获取
c
,然后进入
计数元素
功能。在
解析
之前删除
返回
,您不需要它

。然后(c=>count\u elems(c))
或只是
。然后(count\u elems)
而不调用函数

const count\u elems=函数(c){
常量elems=c.getElementsByTagName('p');
控制台日志(元素长度);
};
常量处理程序=函数(){
返回新承诺(功能(解决、拒绝){
const cont=document.getElementById('cont');
const p=document.createElement('p');
对于(设i=100000;i--;){
cont.appendChild(p.cloneNode());
}
决议(续);
});
}
常量测试=函数(){
handler()。然后(c=>count_elems(c))
.catch(e=>console.log(e));
};
document.getElementById('but')
.addEventListener(“单击”,测试)


单击“我”
。然后(count\u elems(c))
应该是
。然后(count\u elems)
。然后(count\u elems(c))
应该是
。然后(count\u elems)
你面临什么问题?不需要承诺,任何地方都没有异步代码。你是否期望承诺在它自己的线程上运行?但事实并非如此。这里解释了JS使用承诺的原因:您面临的问题是什么?不需要承诺,任何地方都没有异步代码。你是否期望承诺在它自己的线程上运行?但事实并非如此。这里解释了JS使用Promissions的原因:代码是有效的,但我希望容器
cont
将满了……您的意思是
p
可见?请参阅更新的部分。您需要在for循环中创建
p
。虽然不完全可见,但我的意思是循环应该在Promise Resolving之前完成。它是这样工作的。循环完成后,承诺得到解决,这就是IDE问题。如果您将减少循环的数量,您可以看到它工作正常。code is works,但我希望容器
cont
将满…您的意思是
p
可见?请参阅更新的部分。您需要在for循环中创建
p
。虽然不完全可见,但我的意思是循环应该在Promise Resolving之前完成。它是这样工作的。循环完成后,承诺得到解决,这就是IDE问题。如果您将减少循环的数量,您可以看到它工作正常。