JS函数生成器,function* () {}

js函数生成器 用法如下:

function* fn() {
        console.log(1);
        //暂停!
        yield;
        //调用next方法继续执行
        console.log(2);
    }
    var iter = fn();
    iter.next(); //1
    iter.next(); //2

说明如下:

    1、函数生成器特点是函数名前面有一个‘*’

  2、通过调用函数生成一个控制器

  3、调用next()方法开始执行函数

  4、遇到yield函数将暂停

  5、再次调用next()继续执行函数

function* fn() {
    console.log('11111');
    var a = yield 'hello';//当执行到此处时hello被返回给res
    console.log('22222');
    yield;
    console.log('33333');
}
var iter = fn();//11111
var res = iter.next();
console.log(res.value); //hello
iter.next(2);//22222
iter.next(); //2  33333

说明:

可以看到,yield后面有一个字符串,在第一次调用next时,暂停在这里且返回给了iter.next()。

  而暂停的地方是一个赋值语句,需要一个变量给a,于是next()方法中传了一个参数2替换了yield,最后打印a得到了2。

		function fn(a,b){
			console.log(a,b);
			setTimeout(function(a,b){//此处模仿一个请求
				let data={code:'000000',msg:'成功'};
				it.next(data);
			},2000)
		}

		function* g(){
			var text=yield fn(3,5);
			console.log(text);
		}

		var it=g();
		it.next();//3 5

 

你可能感兴趣的:(三,JS类)