|
|
1
17
虽然两者最终都将完成相同的事情,但区别在于第二个示例不是异步的。例如,考虑一下如果发生了什么
这就是承诺带给你的:将正确答案的计算推迟到更方便的时候的强大能力。顾名思义,这个结构“承诺”会在某个时刻给出结果,只是现在不一定。你可以阅读更多关于未来和更大规模工作的承诺 here . |
|
|
2
3
正如Norbert Hartl指出的那样,JSON.parse()将挂起浏览器以查找大字符串。因此,我使用setTimeout()延迟它的执行(暂停10毫秒后)。这是Kris Kowal解决方案的一个例子。它允许当前Javascript线程完成,在回调运行之前释放浏览器以显示DOM更改并为用户滚动页面。
我上面的替代方案看起来很难看,后面的过程需要进一步缩进。我重组了代码,以便我们可以在一个级别提供我们的流程链:
|
|
|
3
1
第二个代码段容易受到拒绝服务攻击,因为example.com/foo只会返回无效的json以使服务器崩溃。即使是空响应也是无效的JSON(尽管是有效的JS)。就像
承诺代码也可以改进很多。这些是平等的:
如果我们想要处理错误,那么它们是相等的:
以及:
|
|
|
4
0
|
|
|
knut · Typescript中每个类的单独文件? 8 年前 |
|
moein rahimi · 为模块创建基础文件以在其他文件中使用 8 年前 |
|
|
Yliaho · CommonJS替代ES6作为别名导入 8 年前 |
|
|
naveen · 为什么需要。导入js文件时的js扩展名 9 年前 |
|
|
Estus Flask · 将其中一个Webpack入口点导出为库 9 年前 |
|
|
Jecimi · ES6模块的“导入”正式兼容CommonJS和AMD? 10 年前 |