
刚开始用 jsbox,今天遇到了这么个问题
function test() { var result = "" url = "api/topics/latest.json" $http.get({ url: url, handler: function (resp) { var data = resp.data[0]['title'] console.log(data) // Synchronized 的轻量级锁 result = data } }) return result } ret = test() console.log("test 的返回值是"+ ret) // 执行结果 "test 的返回值是 undefined" "Synchronized 的轻量级锁 执行代码,输出的顺序是(为什么是先执行 console.log(),后调用的 test 函数?? 导致 console 的时候,还没拿到函数调用结果 ),为什么 test 函数 return 出来的的 result 是 undefined, 假如我下一个函数依赖于 test 的返回值,怎么处理?
1 jugelizi 2020-05-14 19:26:38 +08:00 via iPhone 基础知识 js 按顺序执行 但 ajax 是异步的 |
2 yuanfnadi 2020-05-14 19:29:18 +08:00 function test() { url = "api/topics/latest.json" return new Promise(r => { $http.get({ url: url, handler: function (resp) { var data = resp.data[0]['title'] r(data) } }) }) } test().then(result => { console.log("test 的返回值是" + result) }) |
3 css3 OP |
5 beastk 2020-05-14 23:13:56 +08:00 via iPhone 要异步的话,需要做个循环监视器取值后再清楚监视器 |