异步思维片段
设计用于改进您编程风格的node.js异步模块片段
详细信息
安装
- 总计 788
- Win 452
- Mac 202
- Linux 134
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
读我
示例
series TAB ->
return async.series({
nameOfStepOne: function(callback) {
// After naming step one and tabbing again, you are here
}
});
step TAB ->
return async.series({
stepOne: function(callback) {
...
},
stepTwo: function(callback) {
// Position yourself after step one, type "step"
// and hit tab; you are prompted to name "stepTwo".
// Hit tab again and you're here
}
});
**each TAB ->
** “javascript return async.eachSeries(myArray, function(item, callback) { // 在输入myArray并再次按tab后,您将在这里 }, callback);
**`err TAB ->`**
```javascript
if (err) {
return callback(err);
}
**done TAB ->
** ”javascript return callback(null);
**`skip TAB ->`**
```javascript
// Safely invoke callback when we didn't
// do anything async
return setImmediate(callback);
**skipr TAB ->
** “javascript // 在我们没有进行任何异步工作的情况下,安全地调用带有一些数据的回调,避免崩溃 return setImmediate(_.partial(callback, null, data));
**`whil TAB ->`**
```javascript
var done = false;
return async.whilst(
function() { return !done; },
function(callback) {
// You start typing again here
}, callback
);
您的内部函数会不断被调用,直到将done
设置为true。
哲学
如果您打算用回调进行编码,您必须使用async模块。否则,您将编写意大利面条式的代码和无尽的嵌套括号。
async模块解决了这个问题,但它需要大量的输入,这会导致错误。这就是为什么这些片段有用处。
这些片段使用了简洁的短关键词,以便您能够轻松地将它们刻在手指上,并永久改进您的Node编程风格。
这些片段都以return
开始,以避免意外地跌入其他代码中。调用接收回调的其他函数不会停止您函数的执行,除非您返回。
“each”片段故意使用“eachSeries”。“async.each”通常是错误的做法,因为您没有考虑到同时发生的100?1000?1000000?件事的后果。
如果您有合理的理由相信可以安全地一次处理多个任务,请稍后切换到“eachLimit”。
如果您在函数中没有执行任何异步工作,并且您需要异步调用回调以避免崩溃JavaScript堆栈,则应始终使用“skip”。如果不使用“skip”(它调用“setImmediate”),则您的代码看起来似乎很正常,直到有一天,您有一两百个项目,JavaScript堆栈崩溃。这对于“async.eachSeries”尤其如此。
致谢
这些片段是为支持我们在P'unk Avenue的工作而开发的。