I가 예상대로 작동 다음과 같은 기능 :비동기은 대해 forEach
:createObjectFrom(record) {
let obj = {};
this.opts.transformers.forEach((transformer, index) => {
const headerIndex = findIndex(this.headers, (header) => {
return header === transformer.column;
});
const value = transformer.formatter(record[headerIndex]);
obj[transformer.field] = value;
});
return obj;
}
이 같은 foreach는 본문에 비동기 기능을 비동기 기다리고 있습니다를 사용하여 전화를 리팩토링 할
createObjectFrom(record) {
let obj = {};
this.opts.transformers.forEach(async (transformer, index) => {
const headerIndex = findIndex(this.headers, (header) => {
return header === transformer.column;
});
const result = await this.knex('managers').select('name')
console.log(result);
const value = transformer.formatter(record[headerIndex]);
obj[transformer.field] = value;
});
return obj;
}
forEach가 이제 비동기 적으로 실행되고 함수가 방금 실행되고 떠날 때 함수가 중단됩니다.
동기식으로 forEach를 실행하려면 async를 사용할 수있는 방법이 있습니까? 내가 발전기를 리팩터링 할 수 있을까?
"forEach가 이제 비동기 적으로 실행될 때마다 기능이 중단됩니다."--- 아무 것도 변경되지 않습니다. 'Array.prototype.forEach'는'async' 함수를 받아 들일 것으로 기대하지 않기 때문에, "async"함수를 "normal"함수로 호출 할 것입니다. 그래서 모든 기능이 즉시 호출됩니다. – zerkms
"forEach가 동기식으로 실행되도록 비동기를 사용할 수있는 방법이 있습니까? --- 단지 for 또는 for-of' 루프를 사용하여 배열을 반복합니다. 또한'createObjectFrom'을'async'로 변경해야합니다. – zerkms
[this one] (https://github.com/toniov/p-iteration)을 사용하면 이런 종류의 물건을 부드럽게 처리 할 수 있습니다. 모듈을 사용해도 상관 없으면 사용해보십시오. –