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

    */

  });

}


GCT1015
浏览 88回答 3
3回答

千万里不及你

但是,当我想在承诺中使用它时你永远不应该在executor中创建另一个new PromisePromise 。相反,调用sleep周围函数内的函数f(您已经标记为async,大概是使用await关键字):async function f(filename) {  await sleep(1000);  return new Promise((resolve, reject) => {    /* rest of function  */  });}您的问题也是该(resolve, reject) => {…}函数不是async,因此尝试在await内部使用存在语法错误(在严格模式下),并且还可能导致有关.sleep之后的意外令牌的错误消息await。

白衣非少年

您好尝试使用下面的代码在返回代码中添加异步,因为您在返回中使用等待function sleep(ms) {    return new Promise((resolve) => {        console.log('inside sleep');      setTimeout(resolve, ms);    });  }    function f(filename) {    return new Promise( async(resolve, reject) => {      await sleep(7000);            /*        rest of function      */    });  }

MMMHUHU

尝试将函数 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    */  });}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript