前端异步编程之Promise和async的用法
2019-02-27 11:52:21来源:博客园 阅读 ()
- ES6的新语法Promise
- ES2017引入的async函数
- Generator函数(略)
Promise的含义
Promise的基本用法
/** * resolve 异步操作成功时调用的方法,并将异步操作的结果作为参数传递出去 * reject 异步操作失败时调用的方法,并将报错传递出去 */ var promise = new Promise(function(resolve, reject) { var isSuccess = true // 异步操作是否成功 if (isSuccess) { resolve(data) } else { reject(error) } })
promise.then(function() { // 异步操作成功的处理,resolve状态 }, function() { // 异步操作失败的处理,reject状态 })
var timeout = function(ms) { var data = { list: Array(0), msg: 'success', status: 200 } return new Promise(function(resolve, reject) { setTimeout(resolve, ms, data) }) } timeout(1000).then(function(data) { console.log(data) }, function(error) { console.log(error) })
function loadImageAsync(src) { return new Promise(function(resolve, reject) { var image = new Image() image.src = src image.onload = function() { resolve(image) } image.onerror = function() { reject(new Error(`加载图片失败,url:${url}`)) } }) } var url = 'http://n.sinaimg.cn/ent/transform/250/w160h90/20190226/jjhJ-htptaqe5318645.jpg' loadImageAsync(url).then((image) => { document.body.append(image) }, (err) => { console.log(err) })
async函数
function timeout(ms) { return new Promise(function(resolve, reject) { setTimeout(() => { resolve() }, ms) }) } async function asyncPrint(ms) { await timeout(ms) console.log(`过去了${ms}毫秒,输出此语句`) } asyncPrint(1000)
async function f() { return 'hello' }
f().then((data) => { console.log(data) // ‘hello’ })
async function f() { throw new Error('出错了') } f().then((data) => { console.log('resolve data:', data) }).catch((err) => { console.log('reject error:', err) })
f().then( data => console.log(data), err => console.log(err) )
async function main() { try { const val1 = await firstStep(); const val2 = await secondStep(val1); const val3 = await thirdStep(val1, val2); console.log('Final: ', val3); } catch (err) { console.error(err); } }
原文链接:https://www.cnblogs.com/windrainpy/p/10444708.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:博客园-真够意思
- 如何用算法删除重复数据 2020-03-18
- jQuery异步提交表单的两种方式 2020-03-12
- js调用刷新界面的几种方式 2020-03-05
- Javascript Ajax异步读取RSS文档具体实现 2020-02-25
- 高性能JavaScript循环语句和条件语句 2020-02-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash