m0_57965808 2022-04-09 19:13 采纳率: 91.2%
浏览 116
已结题

如何控制JS代码中的执行顺序

代码如下:

<html>
<head>
<title>shuju</title>
<script>
function fn1(){
var ajax = new XMLHttpRequest()
ajax.open('GET','http://127.0.0.1:5000',true) 
ajax.send()
ajax.onreadystatechange=()=>{
        if(ajax.readyState === 4 && ajax.status === 200){
                datalists=ajax.response
                console.log('你好')
                return datalists
               DataList=JSON.parse(ajax.response)
               
                
        }  
}
}
</script>
</head>
<body>
<script type="text/javascript"> 
var shujuju=fn1()
console.log(shujuju)
</script>
</body>
</html>

img


我想等datalists的值出来之后再执行第二段JS函数。请问有什么办法么?

  • 写回答

2条回答 默认 最新

  • 林一怂儿 前端领域新星创作者 2022-04-09 19:49
    关注

    可以参考下,没有验证浏览器的适用性。

    
    <html>
    
    <head>
      <title>shuju</title>
      <script>
        // function fn1() {
        //   var ajax = new XMLHttpRequest()
        //   ajax.open('GET', 'http://127.0.0.1:5000', true)
        //   ajax.send()
        //   ajax.onreadystatechange = () => {
        //     if (ajax.readyState === 4 && ajax.status === 200) {
        //       datalists = ajax.response
        //       console.log('你好')
        //       return datalists
        //       DataList = JSON.parse(ajax.response)
        //     }
        //   }
        // }
    
        // 例一 callback 形式
        // function fn1(callback) {
        //   var ajax = new XMLHttpRequest()
        //   ajax.open('GET', 'http://127.0.0.1:5000', true)
        //   ajax.send()
        //   ajax.onreadystatechange = () => {
        //     if (ajax.readyState === 4 && ajax.status === 200) {
        //       datalists = ajax.response
        //       console.log('你好')
        //       // return datalists
        //       callback(datalists);
        //       DataList = JSON.parse(ajax.response)
        //     }
        //   }
        // }
    
        // 例二 Promise 的形式
        function fn1() {
          return new Promise((resolve) => {
            var ajax = new XMLHttpRequest()
            ajax.open('GET', 'http://127.0.0.1:5000', true)
            ajax.send()
            ajax.onreadystatechange = () => {
              if (ajax.readyState === 4 && ajax.status === 200) {
                datalists = ajax.response
                console.log('你好')
                // return datalists
                resolve(datalists);
                DataList = JSON.parse(ajax.response)
              }
            }
          })
        }
      </script>
    </head>
    
    <body>
      <script type="text/javascript">
        // var shujuju = fn1()
        // console.log(shujuju)
    
        // 例一
        // fn1((r) => {
        //   console.log(r);
        // })
    
    
        // 例二
        fn1().then(r => {
          console.log(r);
        })
      </script>
    </body>
    
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 微信夜间被转走了1w对,当天手机剪切板里就出现了这个乱码,有铁子可以看看是啥吗可以
  • ¥50 跑通github上的代码 深度学习 pytorch
  • ¥50 求写,批处理调用分区助手分区脚本
  • ¥15 求购HI3519AV100开发板
  • ¥15 请问1553 RT怎么测试,没有BC有方法吗
  • ¥100 业务编程如何选择学习方向和内容?
  • ¥15 wamp3.3.5安装完成后图标正常显示绿色,鼠标左右键点击图标均无反应。求解决方法。
  • ¥15 鼠标点击的这条记录了什么?
  • ¥15 在写pid调速的程序时,电机始终维持最大速度
  • ¥15 【有偿】调用DXGI截图初始化失败,提示0xf 887a0004