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

基于Promise的delay函数的疑问

[复制链接]
  • TA的每日心情
    开心
    2024-2-27 14:20
  • 签到天数: 88 天

    [LV.6]常住居民II

    22

    主题

    97

    回帖

    306

    积分

    荣誉开发者

    积分
    306

    油中2周年新人报道荣誉开发者生态建设者

    发表于 2022-12-26 17:44:21 | 显示全部楼层 | 阅读模式
    悬赏5油猫币未解决

    关于Promise封装的delay函数的小问题求助

    以下是能够实现的代码

    const sleep = (time) => {
            return new Promise(resolve => setTimeout(resolve, time))
        }
    console.log("开始等待")
    sleep(2000).then(()=>{console.log("延时结束啦")})
    • 两句话前后间隔两秒输出

    这里有个问题,如果我resolve里面传参的话这个延时函数就不会生效

    const sleep = (time) => {
            return new Promise(resolve => setTimeout(resolve("delay"), time))
        }
    console.log("开始等待")
    sleep(2000).then(()=>{console.log("延时结束啦")})
    • 两句话同时输出

    可以看到他们返回的分别是pending和fulfilled状态:


    有点不太理解,为什么setTimeout执行的是resolve函数就能够成功延时,执行的是带参数的resolve就没法延时呢?

  • TA的每日心情
    开心
    2024-2-27 14:20
  • 签到天数: 88 天

    [LV.6]常住居民II

    22

    主题

    97

    回帖

    306

    积分

    荣誉开发者

    积分
    306

    油中2周年新人报道荣誉开发者生态建设者

    发表于 2022-12-26 17:46:11 | 显示全部楼层
    还有一个问题@管理员  
    为什么没办法显示base64的图片呢,预览图 "所见即所得" 里面明明就能看到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5196

    回帖

    6078

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6078

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2022-12-26 17:55:42 | 显示全部楼层
    return new Promise(resolve => setTimeout(resolve("delay"), time))

    (resolve => setTimeout(resolve("delay"), time)
    相当于
    直接执行了resolve("delay"),然后把返回值undeinfed传给了setTimeout
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5196

    回帖

    6078

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6078

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2022-12-26 17:56:07 | 显示全部楼层
    bigonion 发表于 2022-12-26 17:46
    还有一个问题@管理员  
    为什么没办法显示base64的图片呢,预览图 "所见即所得" 里面明明就能看到 ...

    论坛mk的bug比较多
    呜呜呜
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-27 14:20
  • 签到天数: 88 天

    [LV.6]常住居民II

    22

    主题

    97

    回帖

    306

    积分

    荣誉开发者

    积分
    306

    油中2周年新人报道荣誉开发者生态建设者

    发表于 2022-12-26 18:19:24 | 显示全部楼层
    李恒道 发表于 2022-12-26 17:55
    return new Promise(resolve => setTimeout(resolve("delay"), time))

    (resolve => setTimeout(resolve( ...

    我好像懂了,这里给setTimeout传入的应该是一个函数名,像这样写也可以的:
    1. const sleep = (time) => {
    2.         return new Promise(resolve => setTimeout(()=>{resolve("delaying")}, time))
    3.     }
    复制代码
    回复

    使用道具 举报

    发表回复

    本版积分规则

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