美文网首页
Promise demo

Promise demo

作者: ITtian | 来源:发表于2017-03-14 15:23 被阅读65次
    学一下es6 promise的写法
    • promise在new 的时候会立即执行let my_promise = new Promise(func(resolve,reject){}),resolve是成功的回调,reject是失败时的回调
    // 测试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)
            })
        }
    
    • 科普一些使用原生的XMLHttpRequest对象怎样发送带参数的请求
      GET方式提交
    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);
    

    相关文章

      网友评论

          本文标题:Promise demo

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