es6中 async/await 处理异步

2018-11-28  本文已影响43人  eks

相信大家在网上已经看过很多解决异步的好方法,也可能看过很多别人写的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捕获;

上一篇下一篇

猜你喜欢

热点阅读