client.hydrated().then(function (client) {
client.query({ query: x})
.then(function logData(data) {
console.log('results of query: ', data);
fs.writeFileSync('notesdata.json', JSON.stringify(data))
})
.catch(console.error);`enter code here`
});
var xy=fs.readFileSync('notesdata.json');
这是AWS SDK的一部分。首先执行从文件读取数据的最后一行,然后执行此功能。我知道回调函数,但不知道如何在这里实现,请问能帮我些什么。 谢谢。
答案 0 :(得分:0)
诺言未正确使用。应该始终将它们链接在一起,以提供一致的控制流和错误处理:
client.hydrated().then(function (client) {
return client.query({ query: x})
})
.then(function logData(data) {
console.log('results of query: ', data);
fs.writeFileSync('notesdata.json', JSON.stringify(data))
// no real need to read it from file because it's already available as `data`
var xy=fs.readFileSync('notesdata.json');
})
.catch(console.error);
答案 1 :(得分:0)
您有两种选择,首先是使用Promise链:
let initClient = () => {
return new Promise((resolve, reject) => {
client.hydrated().then(function (client) {
resolve(client);
}).catch(err => reject(err))
})
}
let query = (client) => {
return new Promise((resolve, reject) => {
client.query({query: x}).then((data) => {
fs.writeFileSync('notesdata.json', JSON.stringify(data))
resolve()
}).catch(err => reject(err))
});
};
initClient().then(query).then(() => {
var xy=fs.readFileSync('notesdata.json');
}).catch(err => {
console.log('err: ', err);
})
如果您使用异步,则等待代码要容易得多:
(async () => {
let client = await client.hydrated();
let data = await client.query({query: x});
console.log('data: ', data);
})().then().catch(err => {
console.log('err: ', err);
})