Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript force JQuery$(文档)。准备好等待承诺解决吗_Javascript_Jquery_Fetch_Es6 Promise - Fatal编程技术网

Javascript force JQuery$(文档)。准备好等待承诺解决吗

Javascript force JQuery$(文档)。准备好等待承诺解决吗,javascript,jquery,fetch,es6-promise,Javascript,Jquery,Fetch,Es6 Promise,因此,我在为获取请求的响应分配变量时遇到了一些问题。我基本上希望对我的API运行一个fetch请求,它将返回一个值。然后我想将该值分配给html中的一个元素 当我运行我所拥有的时,我可以看到值被分配为Promise{} 我看到的一些解决方案是,我可以运行多个$(document.ready(function(){}),但我认为在进入下一个$(document.ready(function(){})之前,它仍然没有解决承诺问题 这是我到目前为止所拥有的 var bal;

因此,我在为获取请求的响应分配变量时遇到了一些问题。我基本上希望对我的API运行一个fetch请求,它将返回一个值。然后我想将该值分配给html中的一个元素

当我运行我所拥有的时,我可以看到值被分配为
Promise{}

我看到的一些解决方案是,我可以运行多个
$(document.ready(function(){}),但我认为在进入下一个
$(document.ready(function(){})之前,它仍然没有解决承诺问题

这是我到目前为止所拥有的

            var bal;
            $(document).ready(function(){
                function getCookie(name){
                    var value = "; " + document.cookie;
                    var parts = value.split("; " + name + "=");
                    if(parts.length == 2) return parts.pop().split(";").shift();
                }
                var decoded = jwt_decode(getCookie("JWT"));
                console.log(decoded.email);
                const url = "http://localhost:3001/wallets/" + decoded.email;
                bal = fetch(url).then((resp) => {
                    return resp.json();
                }).then((data) => {
                    console.log(data[0].balance);
                    return data[0].balance;
                }).catch((error) => {
                    console.log(error);
                });
                $(document).trigger("my-event");
            });
            $(document).on("my-event", function(){
                    console.log(bal);
                    console.log(parseFloat(bal));
                     var oMain = new CMain({
                                    win_occurrence:30,        //WIN PERCENTAGE.SET A VALUE FROM 0 TO 100.
                                    slot_cash: 100,          //THIS IS THE CURRENT SLOT CASH AMOUNT. THE GAME CHECKS IF THERE IS AVAILABLE CASH FOR WINNINGS.
                                    min_reel_loop:0,          //NUMBER OF REEL LOOPS BEFORE SLOT STOPS  
                                    reel_delay: 6,            //NUMBER OF FRAMES TO DELAY THE REELS THAT START AFTER THE FIRST ONE
                                    time_show_win:2000,       //DURATION IN MILLISECONDS OF THE WINNING COMBO SHOWING
                                    time_show_all_wins: 2000, //DURATION IN MILLISECONDS OF ALL WINNING COMBO
                                    money:bal,               //STARING CREDIT FOR THE USER
...

我仍然有点困惑承诺是如何起作用的,以及如何强制让事情等待他们解决。

只是提供一个更新并结束这个问题。这就是我最终解决问题的方法

const finishedPromise = fetch(url).then(r=r.json()).then(data => {
    return data[0].balance'
});
然后在函数中,我分配我简单使用的值

money: await finsihedPromise

只是提供一个更新并结束这个问题。这就是我最终解决问题的方法

const finishedPromise = fetch(url).then(r=r.json()).then(data => {
    return data[0].balance'
});
然后在函数中,我分配我简单使用的值

money: await finsihedPromise

bal始终是一个承诺,即使它已解决。将整个$(document).ready()东西包装到另一个函数中,然后从承诺的.then()调用该函数如何?--不管怎样,promises的.then()特性意味着您可以确定它将在promise解决后发生。请参见@Yishmeray。这是否可以确保承诺的问题在继续之前得到解决?是的,这就是问题所在。然后()就是问题所在!请参阅MDN部分。显然,关于承诺还有其他资源,我承认这有点棘手。我当然不是master.bal,即使它已经解决了,也永远是一个承诺。将整个$(document).ready()东西包装到另一个函数中,然后从承诺的.then()调用该函数怎么样?--不管怎样,promises的.then()特性意味着您可以确定它将在promise解决后发生。请参见@Yishmeray。这是否可以确保承诺的问题在继续之前得到解决?是的,这就是问题所在。然后()就是问题所在!请参阅MDN部分。显然,关于承诺还有其他资源,我承认这有点棘手。我当然不是大师。