zoukankan      html  css  js  c++  java
  • 2/19 对 fileReader.onload 使用 promise 失败

    写在前面

      本人是个菜鸟

      因为做了一个图片上传的组件,写的过程中,在 onload 的时候,我发现了很多奇怪的问题

      起初以为是 for循环 的问题,

      百度了一下 说的是阻塞的原因

      然后我就加 promise 嘛 但是炸了,还是异步执行 非常日怪 

      所以 萌生了一下 探究一下 这个问题


      2021/2/20 更新

           其实这个 本质上是 for 循环 中 循环变量 的自增作为 同步操作 的问题 ( 联系一下 js 的 Event Loop )

      写了一篇详解

      https://www.cnblogs.com/WaterMealone/p/14423722.html


     问题的代码

      

      当进行 操作 响应的值

      

      这个就奇了怪了 ,为啥 对数组 进行操作不是按序进行的 

       所以今天 试验一下 

    开始实验

      首先 我以为是 for 循环机制的问题

      我先自己回顾一下关于 let  和 var 的 区别

      let 作用的是 块级 作用域 

      var 作用的是 函数 作用域

      实例代码

      

       运行结果

      

      但是换成是 var 的话 作用的是整个 函数 具体可以参考 作用域

      先是 声明 var 变量 再进行 声明函数  (  遇到函数的时候 先声明变量 再声明函数 只是声明  到了执行赋值的代码的时候 进行赋值  叫提前什么的 )

      当是 var 的时候

      

      

      然后我苦寻方法,才找到一个方法来解决这个问题,那就是用 promise 的语法糖 ( 明天写一个总结 )

      async 与 await 来重新写一个代码就好了

      (注意的是,当我在 async 里面使用 promise 的时候 才有效,当我再次使用 async 的时候就没有效果了)

      

          然后我总结了一下不会出错的一个模式

      

    总结

      参考了这一位大佬的 文章

      https://www.cnblogs.com/yuanyingke/p/10280681.html

      很谢谢他

      然后 明天继续肝

      我得看旺达了

    Let it roll
  • 相关阅读:
    下载及爬取网页内容
    对于for循环的理解
    记录安装fiddle出现的问题
    Django
    12种可以参考的思路关于代码能干什么
    “字符文本中字符太多”错误及解决方法
    jQuery参考:jquery中的$(document).ready()与window.onload的区别
    页面定时刷新功能实现
    HTML:关于位置的几个概念
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/WaterMealone/p/14418421.html
Copyright © 2011-2022 走看看