loading...

0

Promise循环串行执行写法

javascript读完大概需要6分钟

  • 发布时间:2018-08-15 16:16 星期三
  • 刘伟波
  • 394
  • 更新于2018-08-15 16:16 星期三
<div id="a">
        zero90
  </div>

es6解决办法

var texts = ['one', 'two', 'three']


function setTimeoutPromise(timeout) {
    return new Promise((resolve, reject) => {
        setTimeout(resolve, timeout)
    })
}


var div = document.getElementById('a')

function SetDivText(texts) {
    var result = Promise.resolve()
    texts.forEach((text, index) => {
        result = result.then(() => {
            return setTimeoutPromise(1000).then(() => {
                div.textContent = text
            })
        })
    })
    return result
}

SetDivText(texts).then(() => {
    return setTimeoutPromise(1000)            
}).then(() => {
    div.textContent = 'zero'        
})

es7解决办法

nextSeqid=0;
 function _getLife(a) {
        this.nextSeqid++;
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            resolve('异步函数' + nextSeqid + a)
          }, 100)
        });
      }

      async testAsync() {
        for (var i = 0; i < 3; i++) {

          console.log(await _getLife('参数' + i))

        }
        console.log('最后')


      }

作者:刘伟波

链接:http://www.liuweibo.cn/p/211

来源:刘伟波博客

本文原创版权属于刘伟波 ,转载请注明出处,谢谢合作

你可能感兴趣的文章

    发表评论

    评论支持markdown,评论内容不能超过500字符,如果内容过多或者要及时回复,建议去 segmentfault平台, 也可以来我的直播间来提问。
    关于技术问题或者有啥不懂的都可以留言, 我会定期回复答疑, 也可以来 我的直播间 提问, 推荐最新仓库 前端知识体系, 感謝支持!