亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js 怎么根據數組內每一項的時長依次執行

js 怎么根據數組內每一項的時長依次執行

慕少森 2018-10-17 17:15:08
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個


查看完整回答
反對 回復 2018-11-11
  • 1 回答
  • 0 關注
  • 596 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號