这个异步应该怎么返回?
 发布于 6 年前  作者 github-amazingboy  4777 次预览  最后一次回复是 6 年前  来自 问答 
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 回复
im-here

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

waitingsong

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

TimLiu1

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

ounana

异步不能返回

github-amazingboy

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

这样加了 还是报错.

linliny

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