Skip to content

Commit 5bfa730

Browse files
authored
Merge pull request DrkSephy#85 from Sai628/master
Optimize Chinese expression & Update example code
2 parents 8210df9 + 7c54dd6 commit 5bfa730

File tree

1 file changed

+39
-28
lines changed

1 file changed

+39
-28
lines changed

README_zhCn.md

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,7 @@ class Person {
822822
> Reflect.ownKeys(person); // []
823823
```
824824

825-
一个使用WeakMaps存储数据更实际的例子,就是有关于一个DOM元素和对该DOM元素(有污染)地操作
825+
一个使用WeakMaps存储数据更实际的例子,是存储与DOM元素相关联的数据,而这不会对DOM元素本身产生污染
826826

827827
```javascript
828828
let map = new WeakMap();
@@ -841,16 +841,16 @@ el = null;
841841
value = map.get(el); // undefined
842842
```
843843

844-
上面的例子中,一个对象被垃圾回收期给销毁了,WeakMaps会自动的把自己内部所对应的键值对数据同时销毁
844+
上面的例子中,一旦对象被垃圾回收器给销毁了,WeakMaps会自动的把这个对象所对应的键值对数据同时销毁
845845

846-
> **提示**:结合这个例子,再考虑下jQuery是如何实现缓存带有引用的DOM元素这个功能的,使用了WeakMaps的话,当被缓存的DOM元素被移除的时,jQuery可以自动释放相应元素的内存。
847-
通常情况下,在涉及DOM元素存储和缓存的情况下,使用WeakMaps是非常适合的
846+
> **提示**:结合这个例子,再考虑下jQuery是如何实现缓存带有引用的DOM元素这个功能的。使用WeakMaps的话,当被缓存的DOM元素被移除的时,jQuery可以自动释放相应元素的内存。
847+
通常情况下,在涉及DOM元素存储和缓存的情况下,使用WeakMaps是非常有效的
848848

849849
<sup>[(回到目录)](#table-of-contents)</sup>
850850

851851
## Promises
852852

853-
Promises让我们让我们多缩进难看的代码(回调地狱):
853+
Promises让我们把多缩进难看的代码(回调地狱):
854854

855855
```javascript
856856
func1(function (value1) {
@@ -889,40 +889,51 @@ new Promise((resolve, reject) =>
889889

890890
这里有两个处理函数,**resolve**(当Promise执行成功完毕时调用的回调函数) 和 **reject** (当Promise执行不接受时调用的回调函数)
891891

892-
> **Promises的好处**大量嵌套错误回调函数会使代码变得难以阅读理解
893-
使用了Promises,我们可以让我们代码变得更易读,组织起来更合理
894-
此外,Promise处理后的值,无论是解决还是拒绝的结果值,都是不可改变的。
892+
> **Promises的好处**大量嵌套错误处理回调函数会使代码变得难以阅读理解
893+
使用Promises,我们可以通过清晰的路径将错误事件让上传递,并且适当地处理它们
894+
此外,Promise处理后的值,无论是解决(resolved)还是拒绝(rejected)的结果值,都是不可改变的。
895895

896896
下面是一些使用Promises的实际例子:
897897

898898
```javascript
899-
var fetchJSON = function(url) {
900-
return new Promise((resolve, reject) => {
901-
$.getJSON(url)
902-
.done((json) => resolve(json))
903-
.fail((xhr, status, err) => reject(status + err.message));
904-
});
905-
};
899+
var request = require('request');
900+
901+
return new Promise((resolve, reject) => {
902+
request.get(url, (error, response, body) => {
903+
if (body) {
904+
resolve(JSON.parse(body));
905+
} else {
906+
resolve({});
907+
}
908+
});
909+
});
906910
```
907911

908-
我们还可以使用 `Promise.all()` 来异步的 **并行** 处理一个数组的数据
912+
我们还可以使用 `Promise.all()` **并行化** 的处理一组异步的操作
909913

910914
```javascript
911-
var urls = [
912-
'http://www.api.com/items/1234',
913-
'http://www.api.com/items/4567'
915+
let urls = [
916+
'/api/commits',
917+
'/api/issues/opened',
918+
'/api/issues/assigned',
919+
'/api/issues/completed',
920+
'/api/issues/comments',
921+
'/api/pullrequests'
914922
];
915923

916-
var urlPromises = urls.map(fetchJSON);
924+
let promises = urls.map((url) => {
925+
return new Promise((resolve, reject) => {
926+
$.ajax({ url: url })
927+
.done((data) => {
928+
resolve(data);
929+
});
930+
});
931+
});
917932

918-
Promise.all(urlPromises)
919-
.then(function (results) {
920-
results.forEach(function (data) {
921-
});
922-
})
923-
.catch(function (err) {
924-
console.log('Failed: ', err);
925-
});
933+
Promise.all(promises)
934+
.then((results) => {
935+
// Do something with results of all our promises
936+
});
926937
```
927938

928939
<sup>[(回到目录)](#table-of-contents)</sup>

0 commit comments

Comments
 (0)