首页 > 解决方案 > 如何在续集中获得超出承诺的结果?

问题描述

var mark = 0;
var rightAns=0;
var wrongAns = 0 ;
var notAttempt=0;

questionId = ['1', '2', '3','4', '5', '6','7', '8', '9']

answer = [ 'B', 'D', 'C','E', 'E', 'E', 'E', 'E', 'E']

for(let i = 0 ; i<questionId.length ; i++){

    if(answer[i]==='E'){
      notAttempt +=1; 
    }

else{

    Questions.findOne({where:{id: questionId[i]}})
     .then(question=>{

         if(answer[i]===question.answer){
          rightAns+=1; 
         }else{ 
          wrongAns+=1;
         }

    }) 
   }

 };

标签: node.jssequelize.js

解决方案


您可以使用异步/等待模式。

 var mark = 0;
  var rightAns = 0;
  var wrongAns = 0;
  var notAttempt = 0;

  let questionId = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];

  let answer = ["B", "D", "C", "E", "E", "E", "E", "E", "E"];

  for (let i = 0; i < questionId.length; i++) {
    if (answer[i] === "E") {
      notAttempt += 1;
    } else {
      let question = await Questions.findOne({ where: { id: questionId[i] } });
      if (answer[i] === question.answer) {
        rightAns += 1;
      } else {
        wrongAns += 1;
      }
    }
  }

在您的控制器中(在问题的所有者评论之后):

 exports.postAnswerEvaluate = async (req, res, next) => {
  try {
    const answer = req.body.answer; //will get answer = ["B", "D", "C", "E", "E", "E", "E", "E", "E"];
    const questionId = req.body.questionId; //will get questionId = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];}

    var mark = 0;
    var rightAns = 0;
    var wrongAns = 0;
    var notAttempt = 0;

    // let questionId = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];

    // let answer = ["B", "D", "C", "E", "E", "E", "E", "E", "E"];

    for (let i = 0; i < questionId.length; i++) {
      if (answer[i] === "E") {
        notAttempt += 1;
      } else {
        let question = await Questions.findOne({
          where: { id: questionId[i] }
        });
        if (answer[i] === question.answer) {
          rightAns += 1;
        } else {
          wrongAns += 1;
        }
      }
    }
  } catch (exc) {
    // handle exceptions here
  }
};

推荐阅读