黑马程序员技术交流社区

标题: 【广州前端首发】ES6核心课程笔记之常用API(四) [打印本页]

作者: AreYouGlad    时间: 2018-1-2 14:32
标题: 【广州前端首发】ES6核心课程笔记之常用API(四)
本帖最后由 AreYouGlad 于 2018-1-3 16:26 编辑

查看更多精彩前端资源



控制异步操作流程
普通做法Promise做法promise封装Promise数据传递
数据传递演示封装ajax请求asyncES7
定时器例子async数据接收async对于promise执行失败的处理async函数返回值
[JavaScript] 纯文本查看 复制代码
async function test(time) {
    await new Promise((yes, no) => yes());
    return 123;
}

test()
.then(data => console.log(data));  // then成功回调可接收async函数的返回值
复习promise与async应用
纯promise
[JavaScript] 纯文本查看 复制代码
function animate(selector, style, time) {  return new Promise(function(yes, no) {
    $(selector).animate(style, time, () => { yes() });
  });
}

animate('div', { width: 300 }, 2000)
.then(() => { animate('div', { height: 300 }, 1000) })
.then(() => { animate('div', { marginLeft: 500 }, 2000) })
.then(() => { animate('div', { marginTop: 300 }, 1000) })
.catch(() => console.log('发生了未知错误, 动画执行失败了'));


promise结合async
[JavaScript] 纯文本查看 复制代码
function animate(selector, style, time) {  return new Promise(function(yes, no) {
    $(selector).animate(style, time, () => { yes() });
  });
}

async function divRun() {
    await animate('div', { width: 300 }, 2000);
    await animate('div', { height: 300 }, 1000);
    await animate('div', { marginLeft: 500 }, 2000);
    await animate('div', { marginTop: 300 }, 1000);
}

divRun()
.catch(() => console.log('发生了未知错误, 动画执行失败了'));


作者: AreYouGlad    时间: 2018-1-2 14:33





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2