Promise简单学习 ,备忘react
Promise用同步的写法解决了异步回调金字塔的问题编程
如promise
getData1(data1 => { getData2(data1, data2 => { getData3(data2, data3 => { getData4(data3, data4 => { getData5(data4, data5 => { // 终于取到data5了 }) }) }) }) })
用Promise异步
getData1() .then(getData2) .then(getData3) .then(getData4) .then(getData5) .then(data => { // 取到最终data了 })
基础用法函数
let p = new Promise((resolve, reject) => { // 作一些事情 // 而后在某些条件下resolve,或者reject if (/* 条件随便写^_^ */) { resolve() } else { reject() } }) p.then(() => { // 若是p的状态被resolve了,就进入这里 }, () => { // 若是p的状态被reject })
模拟红绿灯学习
componentDidMount(){ function red(){ console.log("red"); } function yellow(){ console.log("yellow"); } function green(){ console.log("green"); } let light = (fn,timer) => new Promise(resolve=>{ setTimeout(function(){ fn(); resolve(); },timer) }) function start(){ Promise.resolve().then(()=>{ light(red,3000) }).then(()=>{ light(yellow,5000) }).then(()=>{ light(green,8000) }) } start(); }
我写在react项目里test spa
记录下来备忘。code