上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12
返回列表 发新帖
楼主: bigonion - 

如何消除JS异步传染性?

[复制链接]

该用户从未签到

0

主题

2

回帖

2

积分

助理工程师

积分
2
发表于 2024-10-24 12:06:23 | 显示全部楼层
没有什么意义,js的异步的特性没必要去强制为同步。
回复
订阅

使用道具 举报

  • TA的每日心情
    开心
    2024-11-24 16:49
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    5

    回帖

    12

    积分

    荣誉开发者

    积分
    12

    荣誉开发者油中2周年

    发表于 2024-11-24 17:06:54 | 显示全部楼层

    最好是不要在主线程上卡着,有过脚本把页面卡死的情况。目前来看能异步就异步。使用

    async function wait(num){
        return new promise(
            (resove) => {
                setTimeOut(
                    () => {
                    resove(1)
                    })
                });

    这是一个比较经典的异步函数调用。如果我们想要获取那个“1”,要么await wait(0),要么wait(0).then((r => {}
    我们通常想实现的效果是,让当前进程等待一定时间后给用户反馈。那此时我们允许用户做其他操作吗?比方说滚动页面,输入文本等。应该是允许的。只有当前操作不允许重复触发(一般会禁用按钮),或者整个页面显示一个转圈圈。无论哪种情况,在主线程做异步操作都会直接卡死主线程(实践过的),无论是用户操作还是转圈圈(JS特效)都无法进行。直接卡死。用户大概率直接刷新。
    所以我们不能让用户觉得自己“卡了”,所以JS才强制把要等的工作丢异步去。

    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    8

    回帖

    6

    积分

    助理工程师

    积分
    6
    发表于 4 天前 | 显示全部楼层
    感谢分享
    回复

    使用道具 举报

    12
    返回列表 发新帖

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表