美文网首页
es6(回调地狱)

es6(回调地狱)

作者: 余生筑 | 来源:发表于2017-10-24 20:20 被阅读233次

    如果有多个异步操作,就存在一个流程控制的问题:确定操作执行的顺序,以后如何保证遵守这种顺序。

    比如

    function async(arg, callback) {
      callback(arg * 2);
    }
    
    function final(value) {
      console.log('完成: ', value);
    }
    

    问题:如何借助async()得到128?

    • 回调函数嵌套
    async(1,function(data)
            { 
                async(data,function(data)
                {
                    async(data,function(data)
                    {
                        async(data,function(data)
                        {
                            async(data,function(data)
                            {
                                async(data,function(data)
                                {
                                    async(data,function(data)
                                    {
                                        final(data)
                                    })
                                })
                            })
                        })
                    })
                })
            })//完成:  128
    
    • 用promise优化上述代码
    let async=(data)=>new Promise((resolve,reject)=>{           
                    return resolve(data*2)
                })
    
            let final=value=>{
                console.log('完成: ', value);
            }
            async(1)
            .then(async)
            .then(async)
            .then(async)
            .then(async)
            .then(async)
            .then(async)
            .then(final);
    

    相关文章

      网友评论

          本文标题:es6(回调地狱)

          本文链接:https://www.haomeiwen.com/subject/gvmxpxtx.html