javascript - 异步操作回调必须只运行一次吗?
问题描述
明确规定Promise/A+ 回调 (onFulfilled
和onRejected
) 必须只运行一次,另一方面,最多可以运行其中一个。
当我们以“经典”回调样式 () 编写异步 js 代码时asyncOperation(cb)
,是否有任何保证(可能基于某些事实上的约定)cb
只会执行一次?换句话说,在实践中,如果我们处理一个我们不了解其约定的人提供的库,并且我们强烈反对异步操作回调将运行多次,那么我们是否担心采取规避措施?
解决方案
当我们以“经典”回调样式(asyncOperation(cb))编写异步 js 代码时,是否有任何保证(可能基于某些事实上的约定)cb 只会执行一次?
不。例如,请参阅setInterval
或onReadyStateChange
。
换句话说,在实践中,如果我们处理一个我们不了解其约定的人提供的库,并且我们强烈反对异步操作回调将运行多次,那么我们是否担心采取规避措施?
在实践中,您应该阅读文档并了解库在做什么。
推荐阅读
- python - Python 多处理在连接时挂起
- c# - 比较单元测试中的两个列表
- sed - 如果模式匹配,sed 命令删除行并再次在以下行中找到模式然后将其删除
- python - 使用 make_blobs 函数创建两个大小不等的集群时输入错误
- macos - 如何在 swift 4 和 Mac OS App 的可可中将数据(类型数据)转换为 zip 文件(类型文件)?
- javascript - 如何使用javascript根据动态表每一行中的输入值添加天数
- codeigniter - Codeigniter CSRF - 渗透测试
- mysql - 在 MySQL (phpMyAdmin) 中仅显示 2 位小数,但保留所有小数位进行计算
- r - 如何导入 R 中已有时间数据的数据集并阻止 R 将该时间数据转换为整数
- capl - 如何使用 CAPL 从 excel 中读取数据