创建一个承诺,异步可以在setTimeout 回调触发后,我们可以将 setTimeout 函数包装在 Promise 构造函数中,如下面的代码片段所示:
<br>function setTimeoutReturnPromise(delay) {<br> return new Promise((resolve )=> {</p><pre class="brush:php;toolbar:false">setTimeout(resolve, delay);
});
}
此函数将延迟作为参数并返回承诺。 Promise 将在指定的延迟过去后解析,并且 setTimeout 函数的回调将被执行。
现在,我们的 async 函数可以使用 setTimeoutReturnPromise 函数创建一个可以返回的 Promise。这允许我们在调用 setTimeout 回调后使用 then() 方法执行代码:
<br>async(function() {<br> setTimeoutReturnPromise(5000).then( ()=> {<pre class="brush:php;toolbar:false">console.log("async called back");
});
});
自从 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和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中文网其他相关文章!