如何将回调函数转换为承诺?



我有一个简单的回调函数,它是为我自己的学习使用而创建的,一旦出现第一个警报,它就会显示一个警报。

<script>
const sayMessage = (callbackFn) => {
alert("Hello there customer!");
callbackFn();
}
sayMessage(() => {
alert("You are about to enter Jims Gym supplies! Enjoy!");
})
</script>

现在我想做同样的事情,但使用一个承诺。这是我到目前为止所做的,然后我卡住了。

<script>
const promiseMessage = callbackFn =>{
return new Promise((resolve, reject) =>{

} )
}
</script>

我看过其他类似的问题张贴,但是没有人帮助我理解如何使用我创建的示例转换。

我看过这个问题,我如何将现有的回调API转换为承诺?这也不能帮助我理解。

javascript中基本上有两种类型的函数参数,不幸的是它们经常在文献中混淆,因此造成了混淆。

第一种类型是实际的回调,当你告诉引擎为你做一些后台工作,并在它准备好后真正地回叫你。例如众多api,如fs.readFile,geolocation.getCurrentPosition等。这些可以(也应该)使用以下模式转换为承诺:

someBackgroundJob(callbackFn)

someBackgroundJobPromised => new Promise((resolve, reject) => {
someBackgroundJob(() => {
resolve or reject
})
})

第二种类型是函数参数,您可以在Array.mapRegExp.replace等函数中看到。这些不是"回调";严格来说,就是按顺序调用的函数。"承诺"是没有意义的这些。

你的代码是第二种情况,因此这里不需要承诺。

最新更新