javascript - React/Javascript - 函数在执行完成之前返回

标签 javascript reactjs

我创建了一个函数,它接受一个对象并进行解析以构建搜索查询。我遇到的问题是这个函数在我循环访问对象之前返回:

export default function buildQuery(query) {

    let buildQuery = "?", pushAmpersand;
    Object.keys(query).map((v, i) => {
        i === 0 ? pushAmpersand = "" : pushAmpersand = "&";
        buildQuery += pushAmpersand + v + "=" + query[v];
    });

    console.log('Finished executing?');
    console.log(buildQuery);
    return buildQuery;
}

返回值为“?” - 从一开始就设置了字符串。为什么它不等到我循环遍历该对象?

我认为这是因为它是一个“异步”函数,所以这是我应该引入 promise 或回调的地方吗?我还是第一次遇到这样的问题。

感谢您的回答。

最佳答案

您可以使用Array.prototype.forEach(),而不是使用 map

export default function buildQuery(query) {    
    let buildQuery = "?";
    Object.keys(query).forEach((v, i) => {
        if( i !== 0 ) buildQuery += "&";
        buildQuery += (v + "=" + query[v]);
    });    
    console.log('Finished executing?');
    console.log(buildQuery);
    return buildQuery;
}

关于javascript - React/Javascript - 函数在执行完成之前返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46388228/

相关文章:

javascript - 显示隐藏多个工具提示 React Material

reactjs - 使用 React 显示来自 fetch api 的数据

javascript - 如何使用 ajax/javascript 在表单中附加文本?

javascript - 奇怪的 JavaScript 运算符 : expr >>> 0

javascript - 单击按钮后使用 javascript 将计算结果添加到跨度

reactjs - 将 MediaRecorder 分块到 Google Cloud 平台时视频上传损坏

node.js - 如何处理ExpressJS Rest API中的错误

javascript - Chartjs 无法读取未定义的属性数据集

javascript - 在 Chrome 中关闭登录弹出窗口时,Metamask 不返回 "code 4001 User rejected the request.",但在 Edge 中有效

javascript - 加载页面预加载器时隐藏滚动条