ES6学习笔记(七)--Generator函数与Promise对象

原创 2016年06月01日 17:18:47

Generator函数

执行Generator函数会返回一个遍历器对象,也就是说,Generator函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历Generator函数内部的每一个状态。

function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}

var hw = helloWorldGenerator();

hw.next()
// { value: 'hello', done: false }

hw.next()
// { value: 'world', done: false }

hw.next()
// { value: 'ending', done: true }

hw.next()
// { value: undefined, done: true }

Promise对象

Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果

基本用法

//promise实例
var promise = new Promise(function(resolve, reject) {//两个参数方法浏览器实现
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

promise.then(function(value) {//resolve时调用
  // success
}, function(error) {//reject时调用
  // failure
}).catch(function(error) {
  // 处理 promise 和 then回调函数运行时发生的错误
  console.log('发生错误!', error);
});

Promise.all()

var p = Promise.all([p1, p2, p3]);
//p1、p2、p3都是Promise对象的实例,如果不是,就会先调用Promise.resolve方法
//将参数转为Promise实例,再进一步处理

p的状态由p1、p2、p3决定,分成两种情况
1. 只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数
2. 只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数

// 生成一个Promise对象的数组
var promises = [2, 3, 5, 7, 11, 13].map(function (id) {
  return getJSON("/post/" + id + ".json");
});

Promise.all(promises).then(function (posts) {
  // ...
}).catch(function(reason){
  // ...
});

Promise.race()

var p = Promise.race([p1, p2, p3]);
//p1、p2、p3都是Promise对象的实例,如果不是,就会先调用Promise.resolve方法
//将参数转为Promise实例,再进一步处理

只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的Promise实例的返回值,就传递给p的回调函数

版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

Generator 函数 - 基本概念

1.简介基本概念Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。 Generator函数有多种理解角度。从语法上,首先可以把它理解成,Generator函数一个...

Promise对象的含义和基本用法

1.Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理更强大。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件 (通常是一个异...

ES6 Promise对象的学习笔记

Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
  • canot
  • canot
  • 2016-12-14 12:43
  • 1093

ES6学习笔记(五)--函数与对象

函数参数的默认值基本用法function log(x, y = 'World') { console.log(x, y); }log('Hello') // Hello World log('He...
  • SirM2z
  • SirM2z
  • 2016-06-01 17:17
  • 1708

ES6 Promise对象学习心得

学习了阮一峰老师的ES6入门,在学习fetch的时候顺带复习一下promise,特此记录下自己的一些理解。基本用法var promise_ex = new Promise(function(resol...

ECMAScript 6 学习笔记----Generator函数

1.简介 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。 Generator函数有多种理解角度。从语法上,首先可以把它理解成,Generator...

ES6 Promise对象学习总结

这是博主自己对ES6学习中的一些总结,持续更新ing,有错误之处希望大牛们给我指出与提点,小弟在此谢过。 (1)Promise对象是ES6新增对象。可以利用Promise对象进行异步编程。 (2)它包...

5、ES6 === 异步 Promise Generator yield

1、Promise 三种状态: 1、Pending: 等待,处理中,然后: *、Resolve: 完成 *、Rejected: 拒绝...

ES6--Promise、Generator及async

ES6诞生以前,异步编程的方法,大概有如下四种:回调函数、事件监听、发布/订阅、Promise对象;ES6中,引入了Generator函数;ES7中,async更是将异步编程带入了一个全新的阶段。十四...

ES6学习笔记:对象

对象分类ES6 规范明确定义了对象的每种类别: 普通对象:拥有js对象所有默认的内部行为 奇异对象:其内部行为在某些方面有别于默认行为标准对象:如Array、Date等。标准对象可以是普通的,也可以是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)