这个异步应该怎么返回?
发布于 5 年前 作者 github-amazingboy 4323 次浏览 来自 问答
import fs from 'fs';
	fs.readFile('index.html',function(err,data){
		var html = data.toString('utf-8');
		var reg = /(<template[\s]*src=["|'])([\w.]+)(["|'][\s]*><\/template>)/ig;
		var results = reg.test(html);
		if(results){
			var finalStr = html.replace(reg, function(){
				var importFile = arguments[2];
				if(fs.existsSync(importFile)){
					//return fs.readFileSync(importFile).toString('utf-8');
					fs.readFile(importFile,function(err,data){
						var partHtml = data.toString('utf-8');
						return partHtml; //怎么返回呢?
					});
				}else{
					return "hello";
				}
				return 'test'
			})
			console.log(finalStr)
		}
    })
6 回复

callback吧 你想用return那就用Promise封装一下吧

外层包个 Promise(resolve => {…}) 然后 resolve(partHtml)

fs.readFileSync 全部可以写成同步的啊,nodejs api操作文件都有同步api,这个代码简直太难看了

异步不能返回

2019-08-26 14_33_19-启动.png

这样加了 还是报错.

const html = fs.readFileSync(‘index.html’,‘utf8’)

回到顶部