加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

无人机的应用场景

发布时间:2021-01-31 16:34:48 所属栏目:外闻 来源:互联网
导读:微任务会在执行任何其他事件处理,或渲染,或执行任何其他宏任务之前完成。 这很重要,因为它确保了微任务之间的应用程序环境基本相同(没有鼠标坐标更改,没有新的网络数据等)。 如果我们想要异步执行(在当前代码之后)一个函数,但是要在更改被渲染或新事件

微任务会在执行任何其他事件处理,或渲染,或执行任何其他宏任务之前完成。

这很重要,因为它确保了微任务之间的应用程序环境基本相同(没有鼠标坐标更改,没有新的网络数据等)。

如果我们想要异步执行(在当前代码之后)一个函数,但是要在更改被渲染或新事件被处理之前执行,那么我们可以使用 queueMicrotask 来对其进行安排(schedule)。

这是一个与前面那个例子类似的,带有“计数进度条”的示例,但是它使用了 queueMicrotask而不是 setTimeout。你可以看到它在最后才渲染。就像写的是同步代码一样:
 

这里的执行顺序是怎样的?

  1. code 首先显示,因为它是常规的同步调用。
  2. promise 第二个出现,因为 then 会通过微任务队列,并在当前代码之后执行。
  3. timeout 最后显示,因为它是一个宏任务。

更详细的事件循环图示如下(顺序是从上到下,即:首先是脚本,然后是微任务,渲染等):
 

宏任务和微任务

除了本章中所讲的 宏任务(macrotask) 外,还有在 微任务队列[2] 一章中提到的 微任务(microtask)。

微任务仅来自于我们的代码。它们通常是由 promise 创建的:对 .then/catch/finally 处理程序的执行会成为微任务。微任务也被用于 await 的“幕后”,因为它是 promise 处理的另一种形式。

还有一个特殊的函数 queueMicrotask(func),它对 func 进行排队,以在微任务队列中执行。

每个宏任务之后,引擎会立即执行微任务队列中的所有任务,然后再执行其他的宏任务,或渲染,或进行其他任何操作。

例如,看看下面这个示例:
 

有了以上三个部分, 我们要可以渲染出一个在画布中可拖拽, 可编辑的组件了. 当然这块还需要FormRender的帮助, 这块笔者后期会介绍.

以上基本就实现了一个可拖拽可配置的日历组件, 我们接下来继续看看地图组件.

开发地图组件

有了以上的组件开发经验之后我们开发地图组件就非常方便了. 地图组件我们这里使用了@uiw/react-baidu-map, 也就是百度地图的React版本, 大家也可以使用高德地图.因为地图组件react-baidu-map 需要提前阅读对应的文档, 这里笔者就不一一介绍了, 我们直接来看如何实现.同样我们也需要定义好地图对外暴露的props, 笔者这里简单定义几个可配置的属性:

  • ak 百度地图使用凭证, 建议大家在生产环境替换成自己的
  • location 地点的经纬度, 方便快速定位
  • position 地点的地名, 我们可以自定义设置

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读