更新文件功能之间的全局变量

时间:2019-04-11 19:31:44

标签: javascript global-variables multiple-files

我自己完成的一个项目有一个问题。

我的控制器文件中有一个名为Expected spy navigate was not called的全局变量。

hasVoted

这是我声明的文件。

window.hasVoted = false;

2控制台日志说var是import Tweenmax from 'gsap'; window.hasVoted = false; import data_handler from "../database/data_handler"; import cookies from "./cookies"; import sectionHandler from './sectionHandler'; window.onload = () => { // Cookies handler window.COOKIES = cookies; // Handler ajax request and display data console.log(window.hasVoted); data_handler.checkUserIp(); console.log(window.hasVoted); if(window.hasVoted) { console.log('here'); data_handler.getCharactersVote(); } else { console.log('here 2'); sectionHandler.init(); data_handler.getCharactersList(); } }; ,但是当我在控制台日志对象窗口时,var似乎是false。 我不知道为什么以及如何解决它。

如果您还有另一种方法,我会很高兴听到它!

这是true

中的函数
data_handler.js

我试图将var放入window.load中,将var传递给函数参数,但没有任何效果...

感谢您的帮助。

编辑解决方案:

我必须在实际函数中添加一个Promise,然后使代码等待Promise被解决。

更改此checkUserIp() { let xhttp, request = `./database/database_handler.php?type=checkip`, container = document.querySelector('.js-your-choice'); xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = (e) => { let event = e.currentTarget; if (event.readyState == 4 && event.status == 200) { if(event.responseText == ''){ window.hasVoted = false; } else { container.innerHTML = event.responseText; window.hasVoted = true; } } }; xhttp.open("GET", request, true); xhttp.send(); },
通过这个window.onload = () => {

并在函数调用前添加window.onload = async () => {await

然后将功能修改为promise

await data_handler.checkUserIp();

0 个答案:

没有答案