首页 >web前端 >js教程 >如何在 JavaScript 中使用 setTimeout 创建和管理 Promise?

如何在 JavaScript 中使用 setTimeout 创建和管理 Promise?

Linda Hamilton
Linda Hamilton原创
2024-12-06 00:27:11710浏览

How to Create and Manage Promises Using setTimeout in JavaScript?

如何从 setTimeout 创建 Promise

为 setTimeout 创建基本 Promise

创建一个承诺,异步可以在setTimeout 回调触发后,我们可以将 setTimeout 函数包装在 Promise 构造函数中,如下面的代码片段所示:

<br>function setTimeoutReturnPromise(delay) {<br> return new Promise((resolve )=> {</p><pre class="brush:php;toolbar:false">setTimeout(resolve, delay);

});
}

此函数将延迟作为参数并返回承诺。 Promise 将在指定的延迟过去后解析,并且 setTimeout 函数的回调将被执行。

将 Promise 与 async 结合使用

现在,我们的 async 函数可以使用 setTimeoutReturnPromise 函数创建一个可以返回的 Promise。这允许我们在调用 setTimeout 回调后使用 then() 方法执行代码:

<br>async(function() {<br> setTimeoutReturnPromise(5000).then( ()=> {<pre class="brush:php;toolbar:false">console.log("async called back");

});
});

更新 ES2015 及更高版本

自从 ES2015 和现代 JavaScript 引入以来,Promise 已经成为内置的 特征。语法进行了简化,如下所示:

<br>function later(delay) {<br> return new Promise((resolve) =>; {<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);

});
}

使用箭头函数和可选的分辨率值参数,可以进一步压缩代码:

<br>const later = (延迟, 值) => new Promise(resolve => setTimeout(resolve, delay, value));<br>

可取消的 Promise(可选)

如果你想取消超时,你可以返回一个带有promise和cancel的对象方法:

<br>const later = (delay, value) =>; {<br> 让计时器 = 0;<br> 让拒绝 = null;<br> const Promise = new Promise((resolve, _reject) => {<pre class="brush:php;toolbar:false">reject = _reject;
timer = setTimeout(resolve, delay, value);

});
返回{

get promise() { return promise; },
cancel() {
  if (timer) {
    clearTimeout(timer);
    timer = 0;
    reject();
    reject = null;
  }
}

};
};

此方法允许您使用 cancel() 方法取消超时并拒绝承诺。

以上是如何在 JavaScript 中使用 setTimeout 创建和管理 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn