ItIron2021
Javascript
昨天我们用很粗略的方式简单说明了什麽是promise,打铁要趁热,我突然好饿,我们马上来一个相关的题目做练习吧! 因为是题目练习,篇幅会很短,放心放心!
请问下方程序码会有什麽输出结果?
function promiseFn(num, time = 500) {
return new Promise((resolve, reject) => {
setTimeout(() => {
num ? resolve(`${num}, 成功`) : reject('失败');
}, time);
});
}
promiseFn(0)
.then(value => console.log(value))
.catch(err => console.log(err))
防雷防雷~~~~
最终输出结果为
失败
我不是说你的人生失败,是最後会印出失败的字样?
首先我们拆解一下这个问题,promiseFn是个函数,它最终会回传一个promise,也就是说下方的程序码其实是一个promise,所以它才可以用.then或是.catch去取值
promiseFn(0)
既然最後要取值,你就要知道这麽promise最後会是fulfilled || rejected,你才知道最终回传的值是哪一个! 看一下promise内部怎麽决定的吧
num ? resolve(`${num}, 成功`) : reject('失败')
是个简单三元运算,其中会将num强制转为布林值,而0属於falsy value会被转为false,最终执行reject('失败'),这个promise最後的状态是rejected!(如果你觉得强制转型那边看不懂,那请回去看之前关於强制转型的文章:D)
剩下的就简单罗! 如果是rejected,那我们只要看catch那段程序码就好
promiseFn(0)
.then(value => console.log(value)) // 这行不会执行
.catch(err => console.log(err)) // 只执行这边,而err的值是'失败'
如何? 基本的promise应用题还算挺简单的对吧!
promise
本文章同步发布於个人部落格,有兴趣的朋友也可以来逛逛~!
这几篇文章可能都会比较偏技术一些,会尽量解释简单,让大家容易理解,我们就继续看下去。 常见的共识演算...
问题: $ man gcc No manual entry for gcc 看到这个方法,但是失败了...
HTML5新增的input类型: <!-- 需添加form表单域 --> <for...
这次实作的功能是使用Google Book api 使用textfield输入ISBN码按下Butt...
先建个表方便理解 mysql> create table account ( -> id...