我正在尝试使用instrument variable导出该值。然而,数据以对象承诺的形式返回,而不是对象。如何使用最终结果而不是promise对象来赋值模块变量。
var instruments = {
data: async () => {
return new Promise((resolve, reject) => {
/// Respond after retrieving the data
resolve({result : "...." }
);
}
}
var symbols = async () => {
const res = await instruments.data();
return res;
}
module.exports.instrument = symbols().then((data) => {
console.log('data');
return data;
}).catch((e) => {
console.log('error');
return {}
}); 发布于 2020-05-26 13:57:12
看起来你想要一个singleton缓存。下面是一个基本的实现
cache.js
let data = {}
module.exports = {
getData: () => {
return data
},
setData: newData => {
data = newData
return
},
}这里不需要异步。我会将这段代码与检索数据的代码分开。
fetchData.js
const cache = require('./cache')
const fetchData = () => {} // fetch data code here
fetchData().then(data => {
cache.setData(data)
})发布于 2020-05-26 13:05:19
尝尝这个
var instruments = {
data: () => {
return new Promise((resolve, reject) => {
/// Respond after retrieving the data
resolve({result : "...." });
}
}
var symbols = async () => {
const res = await instruments.data();
return res;
}
module.exports.instrument = symbols;然后导入instrument方法进行调用,然后调用
const instrument = require("./filepath");
instrument().then((data) => {
console.log('data');
}).catch((e) => {
console.log(e);
}); 发布于 2020-05-26 13:06:51
如果你的异步函数instruments.data()被调用,它将await返回Promise。只需在return中添加await即可获得预期结果。
var instruments = {
data: async () => {
return await new Promise((resolve, reject) => {
// Respond after retrieving the data
resolve({result : "...." });
}
}或者删除async。和上面的一样。
var instruments = {
data: () => {
return new Promise((resolve, reject) => {
// Respond after retrieving the data
resolve({result : "...." });
}
}https://stackoverflow.com/questions/62014925
复制相似问题