vue ES6中promise的总结

Posted dakunqq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue ES6中promise的总结相关的知识,希望对你有一定的参考价值。

  //第一个promise已经resolve,将‘foo‘传入第一个then。
  
  //第一个then中的函数返回一个promise对象,该promise对象状态为pending,//根据‘如果then中的回调函数返回一个未定状态(pending)的Promise,那么then返回Promise的状态也是未定的,//并且它的终态与那个Promise的终态相同;同时,它变为终态时调用的回调函数参数与那个Promise变为终态时的回调函数的参数是相同的。
  
  //’摘自MDN。
  
  //直到setTimeout时间到达,调用resolve(string),状态变为fulfilled(resolve),才调用下一个then方法。
  
  // 在第二个then中,先调用// 然后跳到return string,由于setTimeout内代码尚未执行,此时string == ‘foobar‘。
  
  且根据 ‘如果then中的回调函数返回一个值,那么then返回的Promise将会成为接受状态,// 并且将返回的值作为接受状态的回调函数的参数值。’摘自MDN。
  
  // 因此进入下一个then,且该段代码没有任何延时。
  
  由于第二个then中return的string值为‘foobar‘,因此先输出‘foobar‘。
  
  // 并在前面的1s定时结束后执行string += ‘baz‘, 最后输出foobarbaz。
  
  总结:promise的then方法属于微任务,而 setTimeout方法属于宏任务。在js事件执行机制中,先执行同步任务,再执行微任务,最后执行宏任务。
  
  在then方法中,若返回的是promise对象,不管是否包含宏任务、微任务,都需要等待promise对象的状态变为fulfilled时,才会调用下一个then方法;在then方法中,若返回的是普通函数或基本类型数据,则会直接返回。此时需要考虑事件执行顺序,遇到宏任务的时候,需要先执行下一个的then方法。
  
  在then方法中,接收参数的若不是函数,则会跳过该方法,继续将上一个then方法的参数传给下一个then方法(一)什么是包只要是含有__init__.py文件的文件夹就是一个包包的本质其实就是一个文件夹,利用包将不同功能的模块组织起来,以此来提高程序的结构性和可维护性包是用来导入的,不是用来执行的,所以它和软件开发规范分文件管理还是有区别的,一个是项目,一个是用来导入的包正因为包是用来导入的,所以运行文件一定要放在包的外面(二)创建一个包利用代码创建一个包下述所有内容,均以此图结构为基础(三)__init__.py文件在我们导入包的时候,其实本质上导入的就是__init__.py文件,解释器会自动执行__init__.py文件中的内容这里是glance下的__init__.py文件")
  
  运行结果:这里是glance下的__init__.py文件(四)包的导入包的导入,须注意两点内容:导入时无论是使用import还是使用from xxx import xxx导入,点的前面必须是一个包使用from xxx import xxx导入时,import前可以出现点,import后不能出现点常规导入导入这是policy文件中的函数")
  
  运行结果:这是policy文件中的函数 # 成功导入导入这是policy文件中的函数")
  
  运行结果:这是policy文件中的函数 # 成功导入包内部之间的导入:包内部之间的相互引用,只能用绝对导入和相对导入,不能直接导入,比如policy.py文件需要导入versions.py文件中的函数,如果直接import导入会报找不到该模块的错误包内部互相引用的时候不能直接导入这是versions文件中的函数")
  
  直接导入versions模块,在外面的run文件中运行,就无法找到versions模块这是policy文件中的函数")
  
  运行结果:原因分析:如果直接在policy文件中运行程序,完全没有问题,因为此时policy文件的模块查找路径中包含versions模块,但是**包是用来导入的,如果在包外的run文件中导入policy模块,此时模块查找路径就变为了run文件所在的路径,所以当policy文件导入versions模块时,路径下并没有versions模块,所以找不到该模块绝对导入:这是versions文件中的函数")
  
    21:20:22.249 [NettyClientSelector_1] www.xgjrfwsc.cn INFO RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
  
  org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl www.xcdeyiju.com call timeout
  
  at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:640)
  
  at org.www.bsylept.com apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1310)
  
  at org. www.qjljdgt.cn apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1256)
  
  at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:339)
  
  at org.apache.www.baiyytwg.com/ rocketmq.example.simple.Producer.main(Producer.java:40)
  
  运行以下命令查看broker配置并写入远程ip地址:
  
  //查看broker配置
  
  sh .www.sangyuLpt.com /bin/mqbroker -m
  
  //关闭broker
  
  sh bin/mqshutdown broker
  
  //将本机远程ip写入配置文件中
  
  echo ‘brokerIP1=111.231.XX.XX‘ > conf/broker.properties
  
  //重新启动broker
  
  nohup sh bin/mqbroker -n 111.231.XX.XX:9876 -c conf/broker.conf autoCreateTopicEnable=true &
  
  运行结果:这是versions文件中的函数这是policy文件中的函数相对导入:这是versions文件中的函数")
  
  这是policy文件中的函数")
  
  运行结果:这是versions文件中的函数这是policy文件中的函数只要使用了相对导入的模块,只能作为模块使用,不能作为脚本(终端中直接运行的文件成为脚本)使用,说白了就是不能直接运行这是versions文件中的函数")
  
  这是policy文件中的函数")
  
  运行结果:单独导入包,并使用包内的包或模块单独导入一个包,其本质上导入的只是__init__.py文件,包中其他的文件并没有被导入这是policy文件中的函数")
  
  只导入了__init__.py文件并不能使用运行结果:此时就要利用到__init__.py文件了,__init__.py文件在包中起到了交接管理的作用,可以在__init__.py文件中导入每个子文件,也可以控制其是否能被导入,所以每一个包中必须要有__init__.py文件这是policy文件中的函数")
  
  运行结果:这是policy文件中的函数直接调用模块中的方法这是policy文件中的函数")
  
  运行结果:这是policy文件中的函数还可以通过__all__来控制模块和模块中函数的导入控制模块导入只能导入versions,其余api下模块都不能被导入运行结果:控制方法导入这是policy文件中的这是policy文件中的控制只能导入foo函数,其余函数都不能被导入运行结果:

以上是关于vue ES6中promise的总结的主要内容,如果未能解决你的问题,请参考以下文章

vue面试题总结

ES6 promise用法总结

ES6 promise的用法总结

ES6----Promise基本用法

es6 promise 简单总结

ES6,ES7,Vue的基本认识和特点