首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查axios nodejs中的循环进度

检查axios nodejs中的循环进度
EN

Stack Overflow用户
提问于 2021-01-13 02:24:23
回答 1查看 21关注 0票数 1

我是javascript的新手,所以我尝试使用API从一首歌曲中删除人声,所以我想做一些检查,如果splitstatussuccess,我将调用函数getlink,但如果splitstatusprogress,我将继续检查它,直到splitstatus成功,然后调用函数getlink。但是当我运行我的代码时,结果只返回"check 1“。对于其他信息,拆分状态只有两个结果“成功”或“进度”,splitlink内部是http links

这是我的代码

代码语言:javascript
运行
复制
var vidid = "";
var splitstatus = "";
var splitlink = "";

function ceksplit(x) {
  setTimeout(function () {
    axios.get(`https://www.lalal.ai/api/check/?id=${x}`).then((res) => {
      splitstatus = res.data.task.state;
    });
  }, 30000);
}

function getlink(x) {
  axios.get(`https://www.lalal.ai/api/check/?id=${x}`).then((res) => {
    splitlink = res.data.split.accompaniment;
  });
}

app.post("/uploads", async(req, res) => {
                await ceksplit(vidid);
                console.log("cek 1");

                if (splitstatus === "progress") {
                  await ceksplit(vidid);
                  console.log("cek 2");
                }
                if (splitstatus === "progress") {
                  await ceksplit(vidid);
                  console.log("cek 3");
                }
                if (splitstatus === "progress") {
                  await ceksplit(vidid);
                  console.log("cek 4");
                }
                if (splitstatus === "progress") {
                  await ceksplit(vidid);
                  console.log("cek 5");
                }
                if (splitstatus === "success") {
                  await getlink(vidid);
                  console.log(splitlink);
                }
});

有人能帮我吗?希望你们能理解我的要求,谢谢:D。

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 03:03:31

解决方案

可以使用setInterval来实现

必须删除

  • setInterval才能检查所有进度状态,您可以删除setInterval

代码语言:javascript
运行
复制
var vidid = "";
var splitstatus = "progress";
var splitlink = "";

async function ceksplit(x) {
  let res = await axios.get(`https://www.lalal.ai/api/check/?id=${x}`);
  splitstatus = res.data.task.state;
}

async function getlink(x) {
  let res = await axios.get(`https://www.lalal.ai/api/check/?id=${x}`);
  splitlink = res.data.split.accompaniment;
}

app.post("/uploads", async (req, res) => {
  let _interval = setInterval(async () => {
    if (splitstatus === "progress") {
      await ceksplit(vidid);
    } else if (splitstatus === "success") {
      await getlink(vidid);
      clearInterval(_interval);
    } else {
      console.log(splitstatus);
      //  clearInterval(_interval);
    }
  }, 3000);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65689808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档