gpt4 book ai didi

node.js - 如何让异步readFile方法遵循node.js中的顺序

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:48 24 4
gpt4 key购买 nike

我有这样的代码

var fs = require('fs');
console.log("1");
fs.readFile("./index.js", function(err, data) {
if (err) {
console.log("err");
}
console.log("2");
});
console.log("3");

结果将是

1
3
2

但是我想要1 2 3我查看了文件系统的文档,它说使用异步方法没有保证顺序。所以文档说如果我想要我的代码结果 1 2 3 应该是

var fs = require('fs');
console.log("1");
fs.readFile("./index.js", function(err, data) {
if (err) {
console.log("err");
}
console.log("2");
console.log("3");
});

但是,如果我正在构建一个有很多其他功能的系统,则这是短代码,我们不能将其全部嵌套在该代码之后,因为该功能需要在被其他功能使用后才能工作那么有没有办法让 fs.readFile 按顺序工作,但不包括在 fs 代码中需要在其之后工作的所有代码?

我的代码有问题

function servedatastart() {

if (urlcontentbasic(urlslug) != "err") {
responsearray["data"] = urlcontentbasic(urlslug);
} else {
// callback function
console.log("urlex");
urlex("none", urlslug); // this function I use fs.readFile(urlslug, function...
}
console.log("other function");
//other function
cuswriteheader();
includescript();
writefooter()
res.end();
}

最佳答案

使用async.waterfall,它允许你按顺序运行异步函数,每个函数都依赖于前一个函数来完成。当最后一个函数完成主回调被调用时,每个函数都可以将结果传递给下一个函数。检查https://caolan.github.io/async/docs.html

var fs = require('fs');
var async = require('async');

async.waterfall([
function (callback) {
console.log("1");
callback();
},
function (arg1, callback) {
fs.readFile("./index.js", callback);
console.log("2");
},
function (arg2, callback) {
console.log("3");
callback()
}
], function(err, res){

});

关于node.js - 如何让异步readFile方法遵循node.js中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com