ES6 Promise的问题

发布于 2022-09-06 08:52:59 字数 247 浏览 13 评论 0

function runAsync(callback){
    setTimeout(function(){
        console.log('111');
        callback('222');
    }, 2000);
}

runAsync(function(data){
    console.log(data);
});

刚接触这个 请问 callback('222')这行代码是什么意思 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

酷到爆炸 2022-09-13 08:52:59

2000毫秒后打印出 111 并调用传进来的callback函数,传入实参 222

弱骨蛰伏 2022-09-13 08:52:59

这不是Promise,是回调。

function runAsync(callback){
    setTimeout(function(){
        console.log('111');
        callback('222');
    }, 2000);
}
runAsync(param => console.log(param));

运行结果如下:
图片描述

泪是无色的血 2022-09-13 08:52:59

回调函数。
因为异步使你无法得到逐行自上而下运行代码的结果,异步任务会使当前作用域的同步任务执行完才执行异步的结果。
就像你定了一份外卖,是无法立即送达的,而你又要事先填好收货地址(否则你永远拿不到外卖,而这个callback,就是你订外卖的收货地址)。

Promise是异步中的微任务(跟你这个例子没什么关系),而你这里的setTimeout是一个异步中的宏任务。

撕心裂肺的伤痛 2022-09-13 08:52:59

类似模拟Promise返回数据,平时mock数据时可以用,加上定时器实际是模拟ajax请求后端数据的延时。

runAsync(function(data){
    //console.log(data);
    return Promise.resolve(data);
});

这个函数里面的回调函数可以返回data,此data即是你mock的数据,比如你按照接口协议返回的数据是

{
  status:‘success’,
  data: {
    list: [],
    field: {},
    ....
  }
}

runAsync中返回的data可以用.then(res => {/res即data值,其他后续逻辑在此处完成/})

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文