javascript - js异步return
黄舟
黄舟 2017-04-11 12:13:32
[JavaScript讨论组]

有点理不清异步return的逻辑,b函数里把a函数的返回值打印,a函数的返回值是异步得到的,所以一开始会得到空数组,怎么修改能使得data不为空之后再return出来呀

        function a(){
            console.log('a');
            var data=[];
            setTimeout(function (){
                data.push([1]);
            },1000);
            return data;
        }
        
        function b(){
            console.log('b');
            var d=a();
            console.log(d);
        }

        b();
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
怪我咯

用回调函数通知或者使用 async function

function getData(callback) {
  const data = []
  console.info(data)
  setTimeout(_ => {
    data.push(+new Date())
    typeof callback === 'function' && callback(data)
  }, 1e3)
}

getData(data => console.info(data))
async function getData() {
  const sleep = delay => new Promise(resolve => setTimeout(resolve, delay || 0))
  const data = []
  console.info(data)
  await sleep(1000)
  data.push(+new Date())
  return data
}

;(async _ => {
  console.info(await getData())
})()
大家讲道理
function a(solve){
    console.log('a');
    var data=[];
    setTimeout(function (){
       data.push([1]);
       solve(data);
    },1000);
}
function b(data){
   console.log(data);
}
new Promise(a).then(b);
巴扎黑

通过Promise来解决吧。

function a() {
    console.log('a');
    var data = [];
    return new Promise(function(resolve, reject){
      setTimeout(function() {
          data.push([1]);
          resolve(data);
      }, 1000);
    })
}

function b() {
    console.log('b');
    var d = a().then(function(data){
      console.log(data);
    })
}

b();
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号