Javascript 使用async/await和got;未能执行';json';在';答复';体流锁定在“eval”位置;错误 const repoBarGraph=async()=>{ d3.选择全部(“#条形图>*”)。删除(); d3.选择(“.main vis container>#tip”).remove(); const repoNames=await fetchRepos(userInputValue.value); 常数天数=[ “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六” ]; const reposweekcommissions=等待承诺( repoNames.map(异步repoNames=>{ const repoStats=await fetchRepoStats(userInputValue.value,repoName); 设dayCommitArr=数组(7),填充(0); repoStats.map(repoStat=>{ repoStat.days.map((day,i)=>(daycommitar[i]+=day)); }); 调试器; 返回日提交人; }) ); 设sumArr=Array(7),fill(0); reposWeekCommits.map(repoDayCommits=> map((repoDayCommit,i)=>(sumArr[i]+=repoDayCommit)) ); 设barData=[]; for(设i=0;i

Javascript 使用async/await和got;未能执行';json';在';答复';体流锁定在“eval”位置;错误 const repoBarGraph=async()=>{ d3.选择全部(“#条形图>*”)。删除(); d3.选择(“.main vis container>#tip”).remove(); const repoNames=await fetchRepos(userInputValue.value); 常数天数=[ “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六” ]; const reposweekcommissions=等待承诺( repoNames.map(异步repoNames=>{ const repoStats=await fetchRepoStats(userInputValue.value,repoName); 设dayCommitArr=数组(7),填充(0); repoStats.map(repoStat=>{ repoStat.days.map((day,i)=>(daycommitar[i]+=day)); }); 调试器; 返回日提交人; }) ); 设sumArr=Array(7),fill(0); reposWeekCommits.map(repoDayCommits=> map((repoDayCommit,i)=>(sumArr[i]+=repoDayCommit)) ); 设barData=[]; for(设i=0;i,javascript,es6-promise,Javascript,Es6 Promise,每当我尝试运行此代码时,它都会给我一个意外的JSON输入结束。这是因为“未能在'response'主体流上执行'JSON'在eval时被锁定”错误。但我看不出我在哪里多次使用我的承诺,也看不到如何修复它。提前感谢您的帮助。我想我们需要查看fetchRepos()或fetchRepoStats()的代码拒绝此错误。这显然是问题所在。我猜测某些代码没有读取整个响应,但我需要查看代码才能知道。仅供参考,当您使用.map()进行副作用编程(例如,根本不使用.map()返回的结果数组)时,这确实会产生误导

每当我尝试运行此代码时,它都会给我一个意外的JSON输入结束。这是因为“未能在'response'主体流上执行'JSON'在eval时被锁定”错误。但我看不出我在哪里多次使用我的承诺,也看不到如何修复它。提前感谢您的帮助。

我想我们需要查看
fetchRepos()
fetchRepoStats()的代码
拒绝此错误。这显然是问题所在。我猜测某些代码没有读取整个响应,但我需要查看代码才能知道。仅供参考,当您使用
.map()
进行副作用编程(例如,根本不使用
.map()
返回的结果数组)时,这确实会产生误导。请改用
for/of
.forEach()
const repoBarGraph = async () => {
    d3.selectAll("#bar-vis > *").remove();
    d3.select(".main-vis-container > #tip").remove();

    const repoNames = await fetchRepos(userInputValue.value);
    const days = [
      "Sunday",
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday"
    ];
    const reposWeekCommits = await Promise.all(
      repoNames.map(async repoName => {
        const repoStats = await fetchRepoStats(userInputValue.value, repoName);
        let dayCommitArr = Array(7).fill(0);
        repoStats.map(repoStat => {
          repoStat.days.map((day, i) => (dayCommitArr[i] += day));
        });
        debugger;
        return dayCommitArr;
      })
    );

    let sumArr = Array(7).fill(0);
    reposWeekCommits.map(repoDayCommits =>
      repoDayCommits.map((repoDayCommit, i) => (sumArr[i] += repoDayCommit))
    );

    let barData = [];

    for (let i = 0; i < days.length; i++) {
      barData.push({ day: days[i], commits: sumArr[i] });
    }
    console.log(barData);
    ...