【发布时间】:2019-08-31 05:12:30
【问题描述】:
我有一个循环遍历元素的递归函数,我想在递归函数完成后控制台记录 json 对象。最好是使用承诺还是回调?
这是我当前的代码
function productData(elem) {
if(elem.hasAttribute("itemprop")) {
const itemProp = elem.getAttribute("itemprop");
const itemText = elem.innerText;
items[itemProp] = itemText;
console.log("items", items);
}
if (elem.hasChildNodes()) {
Array.from(elem.children).forEach(function (item) {
productData(item);
});
}
}
const items = {}
// Get All Products on the page
const product = document.querySelectorAll('[itemtype="http://schema.org/Product"]');
productData(product[0])
【问题讨论】:
-
您没有做任何需要使用承诺的异步操作。记录一下
-
@charlietfl 你能给我举个例子吗?
-
扩展@charlietfl 的评论,承诺适用于非CPU-bound 进程,例如网络、I/O、等待用户输入。您在此函数中所做的一切都受 CPU 限制,因此将其转换为承诺实际上不会在性能方面带来任何好处。
-
只需调用你的函数并在它记录对象之后立即
标签: javascript recursion callback es6-promise