美文网首页
es6中 async/await 处理异步

es6中 async/await 处理异步

作者: eks | 来源:发表于2018-11-28 16:21 被阅读43次

    相信大家在网上已经看过很多解决异步的好方法,也可能看过很多别人写的async/await 处理异步的文章,
    但是很多举例子都是使用一个setTimeout模拟数据处理,
    今天在这里记录下使用axios处理数据请求的例子:
    先上代码,

    
    function requestFn (url,data){
            return new Promise((resolve, reject) => {
                axios({
                    method: 'POST',
                    url: `http://10.0.0.151:6060/${url}`,
                    data: data,
                }).then((res) => {
                    resolve(res);
                }).catch((err) => {
                    reject(err)
                });
            });
        }
        
        async function testFn() {
            try {
                let res1=await requestFn('getArticle.do', {});
                if (res1.data){
                    return await requestFn('articleAddCount.do', {aid: res1.data[0].a_id});
                }
            } catch (e) {
                throw e;
            }
        }
    
        testFn().then(res => {
            console.log('articleFn:', res);
        }).catch(err => {
            console.log('err:', err);
        });
    

    1.requestFn函数里面new一个Promise对象;
    2.申明articleFn函数async function articleFn,函数体中的await表示等待requestFn处理完成之后再返回结果,
    有了这个等待,我们就可以一行一行放心的写代码,避免了回调地狱;
    3.调用函数articleFn().then().catch(),
    这里的then()方法是处理success的函数,catch()捕获异常,
    success的数据实在第2中try{}返回的数据,
    第2中的throw抛出的异常在第3中的catch捕获;

    相关文章

      网友评论

          本文标题:es6中 async/await 处理异步

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