首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >离开异步计时器

离开异步计时器
EN

Stack Overflow用户
提问于 2021-05-07 05:41:47
回答 2查看 39关注 0票数 0

首先,我很抱歉我是JS的初学者。下面的代码停滞在第三行。在background_mine方法中。我不能访问这个方法,那么在这个方法中停留两分钟后如何重置代码呢

代码语言:javascript
运行
复制
Mining = async () => {
console.log(`## rebalance: ${await getBalance(account, wax.api.rpc)}`);
let mine_work = await background_mine(account)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 05:54:02

为了实现超时,您可以像这样使用Promise.race

代码语言:javascript
运行
复制
const background_mine = account => new Promise(() => {});

const promisifiedTimeout = new Promise((resolve, reject) => setTimeout(() => reject('Timed out'), 5000));

(async () => {
  const account = {};
  try {
    const result = await Promise.race([background_mine(account), promisifiedTimeout]);
  }
  catch(e) {
    console.log(e);
  }
})();

票数 1
EN

Stack Overflow用户

发布于 2021-05-07 05:55:03

您可能需要执行Promise.race

正常工作的示例:

代码语言:javascript
运行
复制
const background_mine = new Promise(function(resolve, reject) {
    setTimeout(() => resolve('background_mine'), 500);
});
const limitChecker = new Promise(function(resolve, reject) {
    setTimeout(() => resolve('background_failed'), 1000);
});

const result = await Promise.race([background_mine, limitChecker])
  .catch((error) => {
     console.log(`This timed out`);
  });

console.log(result); //background_mine

具有超时的示例:

代码语言:javascript
运行
复制
const background_mine = new Promise(function(resolve, reject) {
    setTimeout(() => resolve('background_mine'), 500);
});
const limitChecker = new Promise(function(resolve, reject) {
    setTimeout(() => resolve('background_failed'), 1000);
});

const result = await Promise.race([background_mine, limitChecker])
  .catch((error) => {
     console.log(`This timed out`);
  });

console.log(result); //undefined

如果您检查,这完全取决于background_mine函数是低于还是高于limitChecker超时值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67426305

复制
相关文章

相似问题

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