javascript - 为什么我的异步函数返回 Uncaught TypeError : (intermediate value) is not iterable

标签 javascript ecmascript-6

我正在尝试从异步函数检索一些数据,但没有成功,代码如下:

links(originalArray = "/views/layouts/footer-links.json"){
      
        let [template, dataset] = async function () {

            let html = null,     
            // Get the post data
            response = await fetch(originalArray),
             dataset = await response.json(),
            template = dataset.footerLinks.map(header=>{
                   const html =  `
                    <div class="cell medium-3">
                        <h4 title="${header.type}">${header.text}</h4> 
                        <ul class="menu vertical">
                        ${header.anchors.map(link=>`
                            <li> ${link.label} </li>
                        `).join("")}
                        </ul>
                    </div>
                    `; 
                    return html;
                }).join("");    ;  
            return html = {
                        template: template,
                        dataset: dataset
                    };  
        };
        console.log(("In getDataset:::. ",[template, dataset]));
        return [template, dataset];
     
    }

这是我遇到的错误

enter image description here

我明白该消息的含义,但我不知道如何绕过它。

最佳答案

就像其他答案和评论所说,

  • 您没有调用异步函数,而是尝试将其分配给数组解构表达式
  • 您没有等待它并且
  • 它返回一个对象而不是数组

您应该将 links 方法本身设置为 async。没有办法避免让它返回一个 promise 。

async links(originalArray = "/views/layouts/footer-links.json") {
    // Get the post data
    const response = await fetch(originalArray);
    const dataset = await response.json(),
    const template = dataset.footerLinks.map(header => {
        const html =  `
        <div class="cell medium-3">
            <h4 title="${header.type}">${header.text}</h4> 
            <ul class="menu vertical">
            ${header.anchors.map(link=>`
                <li> ${link.label} </li>
            `).join("")}
            </ul>
        </div>
        `; 
        return html;
    }).join("");    ;  
    console.log("In getDataset:::. ", [template, dataset]);
    return [template, dataset];
}

关于javascript - 为什么我的异步函数返回 Uncaught TypeError : (intermediate value) is not iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63046132/

相关文章:

javascript - 多次显示同一组件时共享 session

javascript - VBA JavaScript 对象不支持此属性或方法

javascript - ES6 WeakMap 的实际用途是什么?

javascript - Promise 控制流 (es2015),具有复杂的参数依赖性

javascript - 困惑为什么这个 javascript 会导致我出现问题。定义了一个类和原型(prototype)方法

javascript - 基于数据属性的 d3 节点子结构/样式

javascript - Cognito 用户授权访问 s3 对象?

javascript - 如果我使用 babel-polyfill,我可以使用 Typescript 来定位 ES6 吗?

javascript - react 和 react 路由器上下文未定义

javascript - 列表元素值在访问属性时返回错误值