javascript - generator写异步的问题?

查看:104
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆