【发布时间】:2022-11-17 21:14:41
【问题描述】:
我刚开始学习 javascript 中的 promises 并且正在玩这个玩具示例
我定义了一个函数,它在 1 秒后吐出一个 0 到 10 之间的随机数来模拟从 API 获取数据
function randNum() {
setTimeout(() => {
let num =(Math.random()) * 10
return num
}, 1000)
}
然后我定义了一个函数,它返回一个承诺,如果随机数 > 5 则解决,如果 <5 则拒绝
function myPromise() {
return new Promise((resolve, reject) => {
let myNum = randNum()
setTimeout(() => {
if (myNum > 5) {
resolve(myNum)
} else {
reject(myNum)
}
}, 2000)
})
}
承诺在 2 秒后被解决或拒绝......所以 myNum 的值应该在那时分配......但是当我尝试使用承诺时
myPromise().then((myNum) => { console.log(myNum); }).catch((myNum) => { console.log(myNum) })
它只是返回未定义
我在这里做错了什么??我不太了解承诺
【问题讨论】:
标签: javascript asynchronous random promise es6-promise