将异步javascript代码转换为同步代码

时间:2017-07-02 15:32:46

标签: javascript asynchronous

我有这个JavaScript代码,我正在对函数进行asynchronous调用:

const configDefault = {
  Bot: {
    // initial sessionAttributes
    text: 'The state is not set',
  },
};

$(document).ready(function() {
  myIP();
});

function myIP() {
  $.getJSON("//freegeoip.net/json/?callback=?", function(data) {

    myCallback(data.region_name); 
  });
}

function myCallback(State) {

   if(State == 'New York'){
   configDefault.Bot.text = 'State is New York';

   console.log(configDefault.Bot.text);
   }
   else {
   configDefault.Bot.text = 'State is different than New York';

   console.log(configDefault.Bot.text);

   }

};

上述text变量是从vue.js文件调用的,语法如下:

initMessageList(context) {
      context.commit('pushMessage', {
        type: 'text',
        text: context.state.config.Bot.text,
      });
    }

text中的configDefault变量是加载此javascript页面时屏幕上显示的消息。现在我面临的问题是,由于我正在使用asynchronous电话,因此导致时间问题,因此在屏幕上我仍然会看到text - The state is not set中的原始内容虽然在控制台上我可以将text值视为State is New YorkState is different than New York

现在要解决此问题,我想运行与同步相同的代码,以便可以删除此时间问题(在我的理解中它应该?)。我对JavaScript一点都不熟悉(我几天前就开始使用它并且还在学习)所以我无法将其转换为同步版本。任何人都可以提供如何在同步版本中实现上述内容?

注意:上面的我的更新代码基于this link的以下javascript / vue.js项目。我在上面提到的项目中将上述代码添加到this file(我的代码中文件中的initialTexttext。)

0 个答案:

没有答案