function buyabook(bookTitle) {
var status = document.getElementById("status");
if (status == "unregistered") {
//alert("unregistered");
alert("Please log in before purchasing a book!");
login_prompt();
}
function login_prompt() {
document.getElementById("login_prompt").src = "http://uni.database.ac.nz/BC/Closed/Service.svc/user";
login();
}
function login() {
alert("last");
}
问题在于行
document.getElementById("login_prompt").src =
"http://uni.database.ac.nz/BC/Closed/Service.svc/user";
执行最后..我希望它在登录警报之前执行..或者我想在登录功能中执行的任何其他事情..我不知道如何解决这个问题..:\
答案 0 :(得分:-1)
如果你想先运行它,我会说在发出警报之前调用login_prompt。
function login() {
login_prompt()
alert("last");
}
答案 1 :(得分:-3)
JavaScript会同时处理所有代码,因此,如果您有任何相互依赖的函数或变量,并且想要指定一个订单,则需要将它们包装在Promise或回调函数中。
诸如get,post,delete等的Http方法是异步的,这意味着它们需要时间来收集数据,任何依赖它们的函数必须在promise或回调之后调用。
一些好的阅读材料:
https://www.pluralsight.com/guides/front-end-javascript/introduction-to-asynchronous-javascript
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise