Open jiefancis opened 3 years ago
依次 依次的意思在于每隔xx秒,指针往下读取一个元素并执行,往下执行可以通过队列的事情进行管理这个任务队列。 关于事件队列的方式实现管理,看过lazyman的同学会想到队列来实现,本文在这想用promise的链式调用的方式实现。
function repeat(fn, times, timeout) {
return function(params) { fn(params) } }
promise实现队列管理
function repeat(fn, times, timeout) { const promises = [] let i = 0; while(i < times) { i++ const promise = (params, timeout = 3000) => new Promise((resolve, reject) => { setTimeout(() => { fn(params) resolve() }, timeout) }) promises.push(promise) } return function(params) { return promises.reduce((p,n) => { return p.then(res => { return n(params) }) }, Promise.resolve()) } } var repeatLog = repeat(console.log, 4, 3000) repeatLog('12rgw4')
使用timeout函数封装 const promise操作
const timeout = (fn, timeout) => { return function(params) { return new Promise((resolve, reject) => { fn(params) resolve() },timeout) } } function repeat(fn, times, timeout) { const promises = [] let i = 0; let queue = Promise.resolve(); while(i < times) { i++ promises.push(timeout(fn,3000)) } return function(params) { return promises.reduce((p,n) => { return p.then(res => { return n(params) }) }, Promise.resolve()) } } var repeatLog = repeat(console.log, 4, 3000) repeatLog('12rgw4')
关键词
依次 依次的意思在于每隔xx秒,指针往下读取一个元素并执行,往下执行可以通过队列的事情进行管理这个任务队列。 关于事件队列的方式实现管理,看过lazyman的同学会想到队列来实现,本文在这想用promise的链式调用的方式实现。
return function(params) { fn(params) } }
promise实现队列管理
使用timeout函数封装 const promise操作