You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular异步函数返回undefined而非Promise问题排查求助

嘿,我来帮你搞定这个Angular控制器里的问卷问题合并逻辑~ 既然文件上传、后端交互都没问题,那咱们就聚焦到next_question函数的核心逻辑上,解决“把未知数量的上传问卷问题,追加到同名现有问卷”的需求。

核心需求拆解

首先明确咱们要做的事:

  • 精准匹配同名的现有问卷和上传问卷
  • 遍历上传问卷里的所有问题(不管数量多少)
  • 把新问题安全添加到目标问卷中(可选处理重复问题)

完善后的next_question函数实现

假设后端返回的上传问卷数据里,response_survey.questions是存储问题的数组,现有问卷this_survey的结构和它一致,下面是具体代码:

// Will save next question
const next_question = function(response, this_survey, response_survey) {
  // 第一步:校验问卷名称是否匹配,避免加错问卷
  if (this_survey.name !== response_survey.name) {
    console.warn('警告:上传问卷与目标问卷名称不匹配,无法添加问题');
    return;
  }

  // 第二步:遍历所有上传的问题(处理未知数量的情况)
  response_survey.questions.forEach(uploadedQuestion => {
    // 可选:判断问题是否已存在,避免重复添加(根据业务需求调整判断规则)
    const isDuplicate = this_survey.questions.some(existingQ => 
      existingQ.id === uploadedQuestion.id || 
      existingQ.title.trim() === uploadedQuestion.title.trim()
    );

    if (!isDuplicate) {
      // 第三步:将新问题追加到现有问卷
      this_survey.questions.push({
        ...uploadedQuestion,
        // 可以额外添加标记字段,方便后续追踪
        addedFromUpload: true,
        uploadTimestamp: new Date().toISOString()
      });
    } else {
      console.log(`问题「${uploadedQuestion.title}」已存在,跳过添加`);
    }
  });

  // 第四步:同步更新到后端(如果需要)
  // 比如调用你项目里的问卷服务:
  // this.surveyService.updateSurvey(this_survey).subscribe({
  //   next: () => console.log('问卷更新成功'),
  //   error: (err) => console.error('更新失败:', err)
  // });

  console.log('问题添加完成,现有问卷共', this_survey.questions.length, '个问题');
};

关键注意事项

  • Angular变更检测:如果this_survey是绑定到视图的对象,修改后如果视图没更新,记得注入ChangeDetectorRef调用detectChanges()方法,或者确保你的操作在Angular的Zone上下文里执行。
  • 批量处理优化:如果上传的问题数量很大,建议批量添加后再统一调用后端更新接口,减少请求次数。
  • 错误容错:可以给遍历逻辑加上try-catch,避免单个问题处理失败导致整个流程中断:
    response_survey.questions.forEach(uploadedQuestion => {
      try {
        // 问题添加逻辑
      } catch (err) {
        console.error(`添加问题「${uploadedQuestion.title}」失败:`, err);
      }
    });
    

内容的提问来源于stack exchange,提问作者Nathan Danzmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:49:49