var arr = [{ id: 0, img: '', music: '', duration: 2000
}, { id: 1, img: '', music: '', duration: 4000
}, { id: 2, img: '', music: '', duration: 6000
}, { id: 3, img: '', music: '', duration: 3000
}];我有这样的一个数组,每一项有相应的图片、音乐、时长,想要达到根据每一项的duration值依次显示对应项的图片及音乐播放
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
在 ES6 下可以用 Promise 实现
// ES6 Promise 实现function make(m) { return new Promise(resolve => { // show(m.img);
// play(m.music);
console.log(m);
setTimeout(resolve, m.duration);
});
}let p = make(arr[0]);for (let i = 1, len = arr.length; i < len; i++) {
p = p.then(() => make(arr[i]));
}用 es7 的 async/await 语法更简洁
(async function() { for (let i = 0, len = arr.length; i < len; i++) { const m = arr[i];
await new Promise(resolve => { // show(m.img);
// play(m.music);
console.log(m);
setTimeout(resolve, m.duration);
});
}
})();如果是 es5 呢
可以用第三方 Promise 库,比如 Async.js、Bluebird、jQuery 的 Deferred 等,写法参考第1个
添加回答
举报
0/150
提交
取消
