首页 > 解决方案 > Javascript 无法在承诺中找到我的功能

问题描述

我想调试一个返回承诺的函数,为此我需要一个睡眠函数。我找到了这个:

function sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
} 

它在承诺之外使用时有效。但是,当我想在承诺中使用它时,我得到了错误,即找不到睡眠。这是我的代码:

async function f(filename) {
  return new Promise((resolve, reject) => {
    await sleep(1000);

    /*
      rest of function
    */
  });
}

标签: javascriptpromise

解决方案


尝试将函数 f 中的 return new Promise((resolve, reject) => {}) 替换为 return new Promise(async(resolve, reject) => {})。我希望它能解决你的问题

async function f(filename) {
  return new Promise(async (resolve, reject) => {
    await sleep(1000);

    /*
      rest of function
    */
  });
}

推荐阅读