//秒杀商品剩余件数类似数据时效性要求高
//目前web即时消息通讯的解决方案:轮询、长轮询、websocket
//案例:模拟客户端通过轮询方式向服务发送异步请求获取数据
let ajax = function* () {
yield new Promise((resolve, reject) => {
//执行异步操作。向服务器发送异步请求,获取数据
setTimeout(() => {
let ret = Math.floor(Math.random() * 100)
resolve({ message: ret })
}, 1000)
})
}
let sendRquest = function () {
console.log("发送请求开始")
let it = ajax()
//{value: Promise, done: false}
let ret = it.next()
ret.value.then(data => {
console.log("返回结果", data.message)
if (data && data.message > 30) {
setTimeout(() => {
sendRquest()
}, 1000)
} else {
console.log("over")
}
})
}
sendRquest()