gpt4 book ai didi

node.js - 我正在导入一个异步函数并尝试使用它

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

以下是我读取数据的异步函数

const fs = require('fs');

module.exports = {

foo: async () => {
const a = async () => {
filedata = await fs.readFile('./scripts/pairs.json');
console.log(filedata);
}
a()
}
}

我正在导入第二个文件中的数据并尝试使用 setTimeout 但失败了

var a = require('./scripts/2_fundAccounts')

app.get('/createaccount',(req,res) =>{
console.log(setTimeout(()=>a.foo().then((i)=> console.log(i)),5000));
})

我收到超时错误

超时{ _称为:假, _idle超时:5000, _idlePrev:

接下来我删除了 setTimout 并尝试了然后我变得未定义

app.get('/createaccount', (req, res) => {
console.log(a.foo().then((i) => console.log(i)))
})

接下来我更改了 2_fundaccounts 代码

await a()

我得到

Server is listing on port 3000
Promise { <pending> }
(node:18637) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.
undefined

1) 任何关于在没有任何错误的情况下解决 promise 的建议

2)请帮助我,我不想更改我的 2_fundacounts 代码,我没有权限

3)如果我必须更改 2_fundaccounts,请告诉我要做什么以及如何做

最佳答案

你使用了fs错误。它的方法是异步的,但它们基于回调。你的代码应该是这样的:

foo() {
return new Promise((resolve, reject) => {
fs.readFile('./scripts/pairs.json', (err, filedata) => {
if (err) {
reject(err);
} else {
resolve(filedata);
console.log(filedata);
}
});
});
}

但是,如果您使用的是 Node 10 或更高版本,则导入 require('fs').promises 可以让您将其方法用作典型的异步函数:

const fs = require('fs').promises;

module.exports = {
foo: async () => {
const filedata = await fs.readFile('./scripts/pairs.json');
console.log(filedata);
return filedata;
}
}

关于node.js - 我正在导入一个异步函数并尝试使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53592234/

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