이번에는 Node Async의 비동기 처리에 대한 자세한 설명을 가져왔습니다. Node Async의 비동기 처리에 대한 자세한 설명의 주의사항은 무엇인가요? 다음은 실제 사례입니다.
최근에 nodejs를 공부하고 있는데, 제가 뼈저리게 느낀 점은... 지구상에 js 코드에 익숙한 사람들은 js 로딩 순서가 매우 중요하다는 사실을 알고 있다는 것입니다! 매우 중요합니다! ! 그렇다면 노드를 작성할 때 백그라운드에서 많은 인터페이스가 요청되고(저희 회사는 Java 백그라운드로 데이터를 전송합니다) 인터페이스에 콜백이 많이 있을 것입니다. 콜백마다 반환됩니다. 로딩 순서를 어떻게 처리하느냐가 문제다... 네스팅이 불가능하다... 네스트... 이렇게 하자, 엄청 번거로울 것이다! ! 왜 이렇게 큰 문제에 대한 해결책이 없나요? 그건 불가능해요... 그렇죠!
Async 비동기 처리 모듈!
다음은 Little Sam이 이해한 내용입니다.
설치는 일반 설치모듈과 마찬가지로 매우 간단합니다
설치가 성공했습니다! 다음 단계는 코드에서 모듈을 인용하는 것입니다: var async = require('async');
공식 문서를 확인한 결과 이 모듈에 메서드가 너무 많다는 것을 발견했습니다! 보기만 해도 아찔하다...
편집자가 생각하기에 더 일반적으로 사용되는 몇 가지 방법에 대해 이야기해 보겠습니다
시리즈 1.series(tasks, [callback])은 배열과 컬렉션에 있는 함수를 순차적으로 실행하며, 이전 함수가 실행되면 바로 다음 함수가 실행되어 오류가 발생하는 경우 콜백 함수에서 확인할 수 있습니다. 그렇지 않으면 작업 완료
가 계속 실행됩니다. 말을 많이 해도 소용없어 코드가 진짜 아빠
사용 사례:
//tasks传的是一个数组函数 async.series([ function(callback) { // do some stuff ... callback(null, 'one'); }, function(callback) { // do some more stuff ... callback(null, 'two'); }], // optional callback //我觉得这里很重要err是上面两个函数的错误信息,而results这个参数是一个数组对象,它们的值是上面数组函数每个callback里面的参数。 function(err, results) { // results is now equal to ['one', 'two'] }); // an example using an object instead of an //下面的代码其实跟上面的差不多,只是stasks传的是对象而不是数组 async.series({ one: function(callback) { setTimeout(function() { callback(null, 1); }, 200); }, two: function(callback) { setTimeout(function() { callback(null, 2); }, 100); } }, function(err, results) { // results is now equal to: {one: 1, two: 2} });
병렬 2.parallel(tasks, [callback]) 배열과 컬렉션의 메서드를 병렬로 실행합니다. 다음 함수를 실행하기 전에 이전 함수가 실행될 때까지 기다릴 필요가 없습니다. 콜백 함수
async.parallel( [ function(callback) { setTimeout(function() { callback(null, 'one'); }, 200); }, function(callback) { setTimeout(function() { callback(null, 'two'); }, 100); } ], // optional callback function(err, results) { // the results array will equal ['one','two'] even thoug // the second function had a shorter timeout } );
parallelLimit 3.parallelLimit(tasks,limit,[callback]) 태스크 수, 병렬로 실행할 수 있는 최대 태스크 수에 추가 제한이 있다는 점만 빼면 사용법은 2와 동일합니다
그동안 4.whilst(test, fn, callback) 은 while의 사용법과 동일합니다. 첫 번째 매개변수는 확인 조건, 두 번째 매개변수는 실행 함수, 세 번째 매개변수는 확인 실패 후의
콜백 함수입니다. 일반적으로 지연된 애니메이션에 사용됩니다. morevar count = 0;
async.whilst(
function () { return count < 5; },
//验证成 功继续,失败进回调
function (callback) {
count++;
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
}
);
폭포 5.waterfall(tasks, [callback]) 작업은 순서대로 실행됩니다. 이전 함수의 콜백은 다음 함수의 매개변수로 사용됩니다. 어떤 작업이 오류 콜백을 통과하면 다음 함수는 실행되지 않습니다.
6.compose(fn1, fn2...) 큐에 순서대로 추가하고, 순서대로 실행하고, 이전 함수의 결과를 다음 함수의 값으로 사용async.waterfall([
function(callback){
callback(null, 'one', 'two');
},
function(arg1, arg2, callback){
// arg1 now equals 'one' and arg2 nowequals 'two'
callback(null, 'three');
},
function(arg1, callback){
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
});
위 내용은 노드 Async를 이용한 비동기 처리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!