zoukankan      html  css  js  c++  java
  • js获取异步方法里面的数据

    这里介绍  五种方法(说白了本质 就三种)

    1.callback回调函数 

        function getData(callback){
                setTimeout(()=>{
                    let name = '哈哈哈,我是callback回调函数  获取异步方法里面的数据';
                    callback(name)
                },1000)
            }
    getData(data=>{ console.log(data) })

    2. promise来处理异步   // resolve成功的回调函数     // reject失败的回调函数

          var p = new Promise((resolve,reject)=>{
                //ajax
                setTimeout(()=>{
                    let n = Math.random()
                    if(n<0.5){
                        resolve(n)
                    }else{
                        reject(`${n}大于了0.5所以失败`)
                    }
                  //三元表达式写法  Math.random()<0.5?resolve(n):reject(`${n}大于了0.5所以失败`)
                },2000)
            })
            p.then((data)=>{
                console.log(`${data},,,,我是promise来处理异步`)
            })        

    3.promise结合第一种方法

           // 第三种
            function getData(resolve,reject){
                setTimeout(()=>{
                    let name = '我是第三种获取异步方法里面的数据';
                    resolve(name)
                },1000)
            }
            var p1 = new Promise(getData)
            
            p1.then(data=>{
                console.log(`${data}我是第三种`)
            })        

     4. async  await  方法

    async: 把函数变成异步函数,;     await = async wait,  等待异步函数执行完成  (await一定要写在 async异步方法中)

        // 第四种 async  await
            async function getdata2(){
                
                return 'await,async,我是第四个方法'
            }
            async function test (){
                let d = await getdata2()
                console.log(d)
            }
            test()        

     5.async  await  方法 和promise结合

    // 第五种 async  await 结合Promise
            
            function getdata3(){
                return new Promise((resolve,reject)=>{
                    setTimeout(()=>{
                        let name = '我是第五种方法';
                        resolve(name)
                    },1000)
                })
            }
            async function test3(){
                let aa = await getdata3()  
                console.log(aa)
            }
            test3()

  • 相关阅读:
    在web.config 的config
    有道理
    showModalDialog和showModelessDialog使用心得
    VBScript的 trim()
    RetroGuard的使用方法(转)
    NHibernate 的语句的问题
    Web控件TreeView展开无闪烁的两个解决方法
    如何在类库项目中添加Web窗体文件
    签名活动链接
    __EVENTTARGET为空或不是对象
  • 原文地址:https://www.cnblogs.com/520BigBear/p/12720729.html
Copyright © 2011-2022 走看看