以下是我读取数据的异步函数
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/