场景:用户下单后需要支付,但是支付前需要确定用户的订单是否生成,这就需要在用户操作后,不断查询订单状态。
方法:无非就是设置一个定时器,每隔n秒去查一下,如果状态ok就走下一步,不行就等待,直到获取成功。当然了,可以设置一个最多界限。
第一种方法:promise
1 2 3 4 5 6 7 8 9 10 11 12 |
const check = async (times=0) => { if(times > 3){ return; } const res = await new Promise((resolve) => { setTimeout(async () => { const prom = await check(times + 1); resolve(prom); }, 1000); }); return res; } |
第二种方法:wait
1 |
module.exports = timeout => new Promise(resolve => setTimeout(resolve, timeout)); // wait |
1 2 3 4 5 6 7 8 9 |
import wait from './wait'; const check = async (times=0) => { if(times > 3){ return; } await wait(1000); const prom = await check(times + 1); return prom; } |
如亲所见,第二种方法看上去更明了。