【发布时间】:2018-09-05 16:05:06
【问题描述】:
我一直在到处寻找有关 Promise 或 async/await 的信息,但它们似乎不起作用。我需要从查询函数中获取当前日期,然后才能在后续函数中使用该日期。这是迄今为止我最好的猜测:
// Retrieve current session date
var currentDate;
async function getMaxDate() {
fetch(url).then((data) => {
return data.json();
}).then((json) => {
// This is the date used in queries
currentDate = json[obj].max.substr(0, 10);
console.log(currentDate);
return new Promise(resolve => {
setTimeout(() => {
resolve(currentDate);
}, 5000);
});
}).catch((e) => {
console.error('There was an error:');
console.log(e);
});
}
async function getAllData() {
try {
currentDate = await getMaxDate();
await getMarket(currentDate);
console.log(currentDate);
} catch (error) {
console.log('An error occurred.');
}
}
// This function is called when the document is first loaded
$(function () {
let promise = getAllData();
});
但是无论有没有 promise/async/await,行为都是相同的 - currentDate 直到几秒钟后仍未定义。我也试过这样调用:
getAllData()
.then(function (currentDate) {
console.log(currentDate);
});
这里的 currentDate 直到稍后才定义。如需进一步说明 - getMaxDate 会进行一次提取,它可能会慢到足以导致此问题。因为稍后在该函数中,console.log(currentDate) 确实输出了正确的值。 (currentDate 被定义为一个全局变量。)但这就像我的代码正在以随机顺序执行......
【问题讨论】:
标签: javascript