Promise demo

2017-03-14  本文已影响65人  ITtian
学一下es6 promise的写法
// 测试promise请求,这个方法会返回一个promise对象
    sendPromise(type,url,params){
        const token = JSON.parse(localStorage.getItem('token'))

        let myPromise = new Promise((resolve,reject)=>{
            // 使用原生的XMLHttpRequest对象
            let client = new XMLHttpRequest()
            let str = 'access_token='+encodeURI(token.access_token)
            for(let item in params){
                str +='&'+item+'='+encodeURI(params[item])
            }
            //只是测试了一下GET方式所以就直接这样写了
            client.open(type,url+'?'+str)
            client.onreadystatechange = (result)=>{
                // result.target 就表示client
                if(result.target.readyState !== 4){
                    return
                }
                if(result.target.status === 200){
                    resolve(result.target.response)
                }else{
                    reject(new Error(result.target.statusText))
                }
            }
            client.responseType = 'json'
            client.setRequestHeader('Accept','application/json')
            client.send()
        })
        return myPromise
    }

使用

// 测试,新的方法
    getPromiseOpe(){
        const type = 'GET'
        const url = '/api/operating_records.json'
        const params = {
            user_session_key: this.session_key,
            record_type: 'student_infos',
            student_id: this.student_id,
            per: 10,
            page: this.page
        }
        this.http.sendPromise(type,url,params).then((json)=>{
            // resolve
            console.log('content: ',json)
        },(error)=>{
           // reject
            console.error('出错了',error)
        })
    }
xmlhttp.open("GET","testServlet.json?name="+userName,true);
xmlhttp.send(null);

POST方式提交

xmlhttp.open("POST","testServlet.json",true);
//POST方式需要自己设置http的请求头
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//POST方式发送数据
xmlhttp.send("name="+userName);
上一篇 下一篇

猜你喜欢

热点阅读