栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript中的Deferred,Promise和Future之间有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript中的Deferred,Promise和Future之间有什么区别?

考虑到我对尝试回答OP的问题的明显不满。字面上的答案是,诺言是与其他对象共享的东西,而延期则应保持私有。首先,延期(通常扩展为Promise)可以解决自己,而Promise可能无法解决。

如果您对细节有兴趣,请检查Promises / A +。


据我所知,总体目的是提高清晰度,并通过标准化接口放松耦合:

使用promise而不是直接将回调传递给函数(可以导致接口紧密耦合),而是使用promise可以将对同步或异步代码的关注分开。

就个人而言,我发现在处理例如由异步请求填充的模板,加载具有依赖性网络的脚本以及以非阻塞方式提供用户反馈以形成数据时,推迟特别有用。

确实,比较以异步方式在JS模式下加载CodeMirror后做某事的纯回调形式(抱歉,我已经有一段 时间 没有使用jQuery了):

$(function () {   getscript('path/to/CodeMirror', getJSMode);   // onreadystate is not reliable for callback args.   function getJSMode() {       getscript('path/to/CodeMirror/mode/javascript/javascript.js', ourAwesomescript);   };   function ourAwesomescript() {       console.log("CodeMirror is awesome, but I'm too impatient.");   };});

对于promise制定的版本(再次抱歉,我在jQuery上不是最新的):

$(function () {   $.when(       getscript('path/to/CodeMirror'),       getscript('path/to/CodeMirror/mode/javascript/javascript.js')   ).then(function () {       console.log("CodeMirror is awesome, but I'm too impatient.");   });});

对半伪代码表示歉意,但我希望它可以使核心思想更加清晰。基本上,通过返回标准化的承诺,您可以传递承诺,从而可以进行更清晰的分组。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517852.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号