将一个函数变成 promise 似乎不起作用
Turning a function into promise doesn't seem to work
我编写了一个运行良好的函数,但是我想将它变成一个 promise,以便在 async/await 的其他函数中调用它。我试图通过插入一个新的 Promise 来修改函数,但我想我搞砸了。
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);
}
});
}
如果 guidance/assistance 指出我的错误,我将不胜感激。
如果将 async 与 await 结合使用,则无需创建承诺。将函数更改为原来的方式,并用 let result = await checkStatus();
.
调用它
我编写了一个运行良好的函数,但是我想将它变成一个 promise,以便在 async/await 的其他函数中调用它。我试图通过插入一个新的 Promise 来修改函数,但我想我搞砸了。
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);
}
});
}
如果 guidance/assistance 指出我的错误,我将不胜感激。
如果将 async 与 await 结合使用,则无需创建承诺。将函数更改为原来的方式,并用 let result = await checkStatus();
.