如何使代码按顺序在node.js中执行
我正在尝试完成我的脚本,但是由于某种原因我不知道,它拒绝按照我输入的顺序执行。
我已经尝试在JoinRequest更新函数和以下代码之间放置一个'wait'函数,但是在运行时,它的作用就像函数调用和wait函数是相反的,从而抵消了wait()的问题。 。
const Roblox = require('noblox.js')
var fs = require('fs');
var joinRequests = []
...
function wait(ms) {
var d = new Date();
var d2 = null;
do { d2 = new Date(); }
while(d2-d < ms*1000);
};
...
function updateJReqs() {
Roblox.getJoinRequests(4745601).then((array) => {
var i;
var final = [];
for(i = 0; i < array.length; i++) {
final.push(array[i].username);
};
if(final === '') {
final = '-None';
};
joinRequests = final
console.log('Updated join requests.')
});
}
function check() {
setTimeout(() => {
fs.readFile('Request.txt',encoding = 'utf-8', function(err, data) {
if (err) {
check();
} else {
updateJReqs(); //for some reason this function is executed alongside the below, not before it.
// Tried putting wait(x) in here.
console.log('Request received: ' + data)
var solution = joinRequests
console.log('Fuffiling request with ' + solution)
fufillRequest(solution)
fs.unlink('Request.txt', function(err) {
if(err) throw err;
});
check();
}
});
}, 400)
}
check();
脚本应该等待,直到创建(完成)文件,更新联接请求列表(完成),然后创建包含联接请求列表的新文件(未完成)。>>
我正在尝试完成我的脚本,但是由于某种原因,我不知道,它拒绝按照我输入的顺序执行。我试图在JoinRequest更新函数和之间放置一个'wait'函数。 ..
回答如下:如果我了解您的代码,并且使用了异步代码,则需要在updateJReqs中返回一个promise并添加一个离开函数的条件,因为您具有无限递归的条件。
如何使代码按顺序在node.js中执行
我正在尝试完成我的脚本,但是由于某种原因我不知道,它拒绝按照我输入的顺序执行。
我已经尝试在JoinRequest更新函数和以下代码之间放置一个'wait'函数,但是在运行时,它的作用就像函数调用和wait函数是相反的,从而抵消了wait()的问题。 。
const Roblox = require('noblox.js')
var fs = require('fs');
var joinRequests = []
...
function wait(ms) {
var d = new Date();
var d2 = null;
do { d2 = new Date(); }
while(d2-d < ms*1000);
};
...
function updateJReqs() {
Roblox.getJoinRequests(4745601).then((array) => {
var i;
var final = [];
for(i = 0; i < array.length; i++) {
final.push(array[i].username);
};
if(final === '') {
final = '-None';
};
joinRequests = final
console.log('Updated join requests.')
});
}
function check() {
setTimeout(() => {
fs.readFile('Request.txt',encoding = 'utf-8', function(err, data) {
if (err) {
check();
} else {
updateJReqs(); //for some reason this function is executed alongside the below, not before it.
// Tried putting wait(x) in here.
console.log('Request received: ' + data)
var solution = joinRequests
console.log('Fuffiling request with ' + solution)
fufillRequest(solution)
fs.unlink('Request.txt', function(err) {
if(err) throw err;
});
check();
}
});
}, 400)
}
check();
脚本应该等待,直到创建(完成)文件,更新联接请求列表(完成),然后创建包含联接请求列表的新文件(未完成)。>>
我正在尝试完成我的脚本,但是由于某种原因,我不知道,它拒绝按照我输入的顺序执行。我试图在JoinRequest更新函数和之间放置一个'wait'函数。 ..
回答如下:如果我了解您的代码,并且使用了异步代码,则需要在updateJReqs中返回一个promise并添加一个离开函数的条件,因为您具有无限递归的条件。