let makeAjaxCall = (url, cb) => {
// do some ajax
// callback with result
}
makeAjaxCall('http://url1', (result) => {
result = JSON.parse(result)
})
makeAjaxCall('http://url1', (result) => {
result = JSON.parse(result)
makeAjaxCall(`http://url2?q=${result.query}`, (result) => {
result = JSON.parse(result)
makeAjaxCall(`http://url3?q=${result.query}`, (result) => {
// ...
})
})
})
elem.addEventListener(type, (evt) => {
// handler
})
let PubSub = {
events: {},
on(type, handler) {
let events = this.events
events[type] = events[type] || []
events[type].push(handler)
},
emit(type, ...datas) {
let events = this.events
if (!events[type]) {
return
}
events[type].forEach((handler) => handler(...datas))
}
}
const urls = [
'http://url1',
'http://url2',
'http://url3'
]
let makeAjaxCall = (url) => {
// do some ajax
PubSub.emit('ajaxEnd', result)
}
let subscribe = (urls) => {
let index = 0
PubSub.on('ajaxEnd', (result) => {
result = JSON.parse(result)
if (urls[++index]) {
makeAjaxCall(`${urls[index]}?q=${result.query}`)
}
})
makeAjaxCall(urls[0])
}
let makeAjaxCall = (url) => {
return new Promise((resolve, reject) => {
// do some ajax
resolve(result)
})
}
makeAjaxCall('http://url1')
.then(JSON.parse)
.then((result) => makeAjaxCall(`http://url2?q=${result.query}`))
.then(JSON.parse)
.then((result) => makeAjaxCall(`http://url3?q=${result.query}`))
function* gen() {
let a = yield 1
let b = yield a * 2
return b
}
let it = gen()
it.next() // output: {value: 1, done: false}
it.next(10) // a = 10, output: {value: 20, done: false}
it.next(100) // b = 100, output: {value: 100, done: true}
let makeAjaxCall = (url) => {
// do some ajax
iterator.next(result)
}
function* requests() {
let result = yield makeAjaxCall('http://url1')
result = JSON.parse(result)
result = yield makeAjaxCall(`http://url2?q=${result.query}`)
result = JSON.parse(result)
result = yield makeAjaxCall(`http://url3?q=${result.query}`)
}
let iterator = requests()
iterator.next() // get everything start
let makeAjaxCall = (url) => {
return new Promise((resolve, reject) => {
// do some ajax
resolve(result)
})
}
let runGen = (gen) => {
let it = gen()
let continuer = (value, err) => {
let ret
try {
ret = err ? it.throw(err) : it.next(value)
} catch (e) {
return Promise.reject(e)
}
if (ret.done) {
return ret.value
}
return Promise
.resolve(ret.value)
.then(continuer)
.catch((e) => continuer(null, e))
}
return continuer()
}
function* requests() {
let result = yield makeAjaxCall('http://url1')
result = JSON.parse(result)
result = yield makeAjaxCall(`http://url2?q=${result.query}`)
result = JSON.parse(result)
result = yield makeAjaxCall(`http://url3?q=${result.query}`)
}
runGen(requests)
let makeAjaxCall = (url) => {
return new Promise((resolve, reject) => {
// do some ajax
resolve(result)
})
}
;(async () => {
let result = await makeAjaxCall('http://url1')
result = JSON.parse(result)
result = await makeAjaxCall(`http://url2?q=${result.query}`)
result = JSON.parse(result)
result = await makeAjaxCall(`http://url3?q=${result.query}`)
})()
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有