javascript - generator写异步的问题?
本文介绍了javascript - generator写异步的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
问题:运行时输入分别为路径和后缀的参数,打印出符合条件的文件
想用generator,不知如何实现,总报错,请各位指点一下
'use strict'
var fs = require("fs");
var arr = [];
function* test() {
fs.readdir(process.argv[2], (err, list) => {
//console.log(list);
list.forEach((val, index) => {
let temp = val.split(".");
if (temp[1] === process.argv[3]) {
arr.push(val);
//console.log(arr);
}
});
yield arr;
});
}
var generator = test();
var arr1 = generator.next().value;
arr1.forEach((val,index)=>{
console.log(val);
});
解决方案
yield语句不能用在普通函数中,否则会报错
fs.readdir 里的callback函数就是一个普通函数
'use strict'
var fs = require("fs");
function run(gen){
var gen_obj=gen(resume);
function resume(){
//gen_obj.next(arguments);
var list=arguments[1];
var arr=[];
list.forEach((val,index)=>{
let tmp = val.split(".");
if(tmp[1] === process.argv[3]){
arr.push(val);
}
});
console.log(arr);
gen_obj.next(arr);
}
gen_obj.next();
}
run(function* gen(resume) {
var ret,err,data;
ret=yield fs.readdir(process.argv[2],resume);
console.log(ret);
});
这篇关于javascript - generator写异步的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文