Saya telah menulis fungsi yang berfungsi dengan baik, namun saya ingin mengubahnya menjadi janji untuk memanggilnya di fungsi lain dengan async/menunggu. Saya mencoba memodifikasi fungsi dengan memasukkan Janji baru tetapi saya pikir saya telah mengacaukannya.

async function checkStatus(requestStatus, taskStatus, taskId, ontId) {
  return new Promise(function (resolve, reject) {
    let result;
    console.log("CHECK STATUS FUNCTION REACHED: ", ontId);
    if (requestStatus == 200 && taskStatus == "Received") {
      const date = moment().format("LL");
      let startTime = new Date(Date.now() + 5000);
      let endTime = new Date(startTime.getTime() + 180000);
      const j = schedule.scheduleJob(
        { start: startTime, end: endTime, rule: "*/30 * * * * *" },
        async function () {
          const response = await axios({
            method: "post",
            url: `http://localhost:7788/api/checkProvisioningStatus/${taskId}`,
            data: { ontId },
          });
          result = response.data.status;
          if (
            response.data.status === "Failed" ||
            response.data.status === "Completed"
          ) {
            console.log(
              "%cRESPONSE.DATA.STATUS: ",
              "color: green; font-weight: bold",
              response.data.status
            );
            j.cancel();
          }
        }
      );
      resolve(result);
    } else {
      console.log("Unable to save and provision ONT");
      result = "Failed";
      reject(result);
    }
  });
}

Saya akan sangat menghargai bimbingan/bantuan dalam mengidentifikasi kesalahan saya.

0
Stephan Du Toit 20 Mei 2020, 07:57

1 menjawab

Jawaban Terbaik

Anda tidak perlu membuat janji jika Anda menggunakan async dengan menunggu. Ubah fungsi seperti semula, dan panggil dengan let result = await checkStatus();.

1
elisecode247 20 Mei 2020, 05:22