博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Promise简单实践
阅读量:4187 次
发布时间:2019-05-26

本文共 2450 字,大约阅读时间需要 8 分钟。

demo1 

// 这个 get 是 callback 方式的 API    // 可以使用 Promise 来解决这个问题    function get(url, callback) {        var oReq = new XMLHttpRequest()        // 当请求加载成功之后要调用指定的函数        oReq.onload = function () {            // 我现在需要得到这里的 oReq.responseText            callback(oReq.responseText)        }        oReq.open("get", url, true)        oReq.send()    }//封装一个即支持Promise又支持回调函数的方式    function pGet(url, callback) {        return new Promise(function (resolve, reject) {            var oReq = new XMLHttpRequest()            // 当请求加载成功之后要调用指定的函数            oReq.onload = function () {                // 我现在需要得到这里的 oReq.responseText                callback && callback(JSON.parse(oReq.responseText))                resolve(JSON.parse(oReq.responseText))            }            oReq.onerror = function (err) {                reject(err)            }            oReq.open("get", url, true)            oReq.send()        })    }    //方式一:Promise链式调用    pGet('http://127.0.0.1:3000/users/4')        .then(function (data) {            console.log(data)        })    //方式二:回调函数    pGet('http://127.0.0.1:3000/users/4',function (data) {        console.log(data);    })

demo2

var getDate = function (a, b) {    return new Promise(function (resolve, reject) {        var sum = a + b        if (true) {            resolve(sum)        } else {            reject(sum)        }    })} getDate(1, 1)    .then(function (data) {        console.log(data);        return getDate(3, 3)    })    .then(function (data) {        console.log(data);        return getDate(5, 5)    })    .then(function (data) {        console.log(data);

Demo3:

fun1() {    return new Promise((resolve, reject) => {      setTimeout(() => {        console.log("1")        resolve("p1")      }, 1000)    })  },  fun2() {    return new Promise((resolve, reject) => {      setTimeout(() => {        console.log("2")        resolve("p2")      }, 2000)    })  },  fun3() {    return new Promise((resolve, reject) => {      setTimeout(() => {        console.log("3")        resolve("p3")      }, 3000)    })  },  fun1().then((res) => {    console.log(res)    return this.fun2()  }).then((res) => {    console.log(res)    return this.fun3()  }).then((res) => {    console.log(res)  })//全部执行成功后执行    Promise.all([this.fun1(),this.fun2(),this.fun3()]).then((res)=>{      console.log(res)    })//一个执行成功就执行,可以做超时任务判断    Promise.race([this.fun1(),this.fun2(),this.fun3()]).then((res)=>{      console.log(res)    })

 

转载地址:http://plsoi.baihongyu.com/

你可能感兴趣的文章
PIA (Primary Interop Assembly) & AIA (Alternate Interop Assembly)简介
查看>>
“妖精”团队———阿里巴巴
查看>>
迟到的感谢——2006最有价值博客的候选人(& 个人回顾)
查看>>
第29回 软件质量度量
查看>>
IT 2007预言
查看>>
怎样让.Net2.0的Membership使用已存在的Sql Server2000/2005数据库
查看>>
ASP.NET2.0 文本编辑器FCKeditor使用方法详解
查看>>
常见的 Web 项目转换问题及解决方案
查看>>
VS2005中使用ClickOnce 部署应用程序的升级
查看>>
Visual Studio2005下配置及运行NUnit
查看>>
.Net Remoting配置文件的用法
查看>>
Tomcat性能调整优化
查看>>
利用SQL Server 2005减轻生产服务器优化负荷
查看>>
优化MYSQL服务器
查看>>
Exchange磁盘性能优化
查看>>
Apusic应用服务器的性能调节_JVM优化
查看>>
Apache重负荷服务器应如何优化?
查看>>
Windows NT/2000服务器优化
查看>>
Windows 2003系统优化技巧
查看>>
Linux NFS服务器性能优化
查看>>