怎么用export封装一个异步

我只是一个渣渣
  • 278

clipboard.png

export let test () {
        return $.ajax({
            url:'www.baidu.com',
            data:{},
            type:'get',
            datatype:'jsonp',
            success:function(data){return data},
            error:function(res){return res}
        })
    }

clipboard.png
本意是我想封装一个异步
然后在外面调用这个异步
把成功和错误方法都return出去

回复
阅读 2.7k
2 个回答
**参考ES6 Promise使用,文档地址:http://es6.ruanyifeng.com/#docs/promise**


export function test (url,data,type) {
   return new Promise((resolve,reject)=>{
        $.ajax({
            url,
            data,
            type,
            datatype:'jsonp',
            success:function(data){resolve(data);},
            error:function(res){reject(res);}
        })
     })
   }

我觉的你有必要去理解下异步和同步的概念!
我觉的你可以这样改,传2个回调函数进去

let test(data,success,error) {
    return $.ajax({
        url:'www.baidu.com',
        data:data,
        type:'get',
        datatype:'jsonp',
        success:success,
        error:error
    })
}

调用的修改

export default{
    data () {
        retrun {
            aa: null
        }
    },
    methods: {
        init () {
            var _this = this
            var data = {}
            var success = function (data) {
                _this.aa = data
            }
            var error = function (res) {
                console.log(res)
            }
            test(data,success,error)
        }
    },
    mounted () {
        this.init()
    }
}

如果你不想把aa放在data里直接在success里定义一个var aa 执行下去也可以

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏