首页 > 解决方案 > 如何使用线程或任务调用 javascript 函数?

问题描述

我在下面尝试了以下代码

。CS

    string someone = "John";
    int timer = 3000;
    int check = 1;
    string script = "<script> runPromise('" + someone + "'," + timer + "," + check + ").then(someone => { console.log('" + someone + "', someone)});</script>";
    ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", script);

.aspx

<script>
    let runPromise = (someone, timer, check, success = true) => {
        console.log(`${someone} start run`);
        console.log(check);
      return new Promise((resolve, reject) => {
        if (check == 1) {
          setTimeout(function () {
            resolve(`${someone} run ${timer / 1000} second`);
          }, timer);
        } else {
          reject(`${someone} fail`)
        }
      });
    }
</script>

此代码只能在按钮中使用。

当我想等待 10 秒时,如何在线程或任务中使用它?

任何帮助将不胜感激。

标签: javascriptc#asp.netwebforms

解决方案


您可以尝试使用setTimeout

已编辑

string someone = "John";
int timer = 10000;
int check = 1;
string script = "<script> setTimeout(() => someFunction(('" + someone + "'," + timer + "," + check + ").then(value => {console.log(value);}), " + timer + ");</script>";
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", script);

var someFunction = (someone, timer, check) => {
  console.log(`${someone} start run`);
  console.log(check);

  return new Promise((resolve, reject) => {
    if (check == 1) {
      resolve(`${someone} run ${timer / 1000} second`);
    } else {
      reject(Error("It broke"));
    }
  });
};

样本:

var someFunction = (someone, timer, check) => {
  console.log(`${someone} start run`);
  console.log(check);
  
  return new Promise((resolve, reject) => {
    if (check == 1) {
      resolve(`${someone} run ${timer / 1000} second`);
    } else {
      reject(Error("It broke"));
    }
  });
};

setTimeout(() => someFunction(`someone`, 10000,1).then(value => {
console.log(value);
}), 10000);


推荐阅读