javascript - 노드 비동기 문제
大家讲道理
大家讲道理 2017-05-16 13:23:54
0
6
373

findById 이후에 콜백을 실행하고 싶지만 콜백에 배치할 수 없습니다. 그렇지 않으면 여러 번 실행됩니다. 어떻게 해야 하나요?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(6)
漂亮男人

소프트웨어는 서비스업이라 서비스 인식이 있어야 하는데... 코드맵에는 문제가 없어 아주 명확하게 알 수 있는데, 응답자가 코드를 변경하고 싶다면 다시 입력해야 합니다.. .

이미 es6 구문을 사용한 것을 확인했으므로 올바른 솔루션은 Promise여야 합니다. Promies는 직접 Promies로 캡슐화할 수 있습니다

으아악

물론 블루버드에서 제공하는 도구 기능을 사용해 Promise를 캡슐화할 수도 있습니다

여기서는 여러 비동기 호출을 실행하고 있으므로 함께 반환하려면 여러 결과가 있어야 합니다. 따라서 Promise.all 뒤에 있는 then()의 콜백에 주의하세요. Promise.all 后面 then() 中的回调。

如果你要用 es5,建议你写成 es6 再 Babel。不过 Node 7.6+ 已经支持 es2017 的一些特性,所以其实不必在意这个问题。如果确实需要,就采用在 findById

es5를 사용하려면 es6을 작성한 후 Babel을 사용하는 것이 좋습니다. 그러나 Node 7.6+는 이미 es2017의 일부 기능을 지원하므로 실제로 이 문제에 대해 걱정할 필요가 없습니다. 정말로 필요한 경우 findById 콜백에서 계산 방법을 사용하여 확대 이동 횟수를 계산합니다(콜백 호출). 🎜
我想大声告诉你

옵션 1

async/await를 사용하세요. 이를 통해 User.findById를 동기식으로 사용할 수 있습니다. async/await。这样就可以按照同步方式使用 User.findById

方案二

在循环中把 User.findById 加入一个数组,然后用 Promise.allcallback 写在 Promise.all().then() 中。

方案三

使用一个状态变量,每次检查一下,满足条件再执行 callback

🎜옵션 2🎜🎜 🎜루프의 배열에 User.findById를 추가한 다음 Promise.allcallback을 사용하여 Promise.all에 씁니다. () .then()에 있습니다. 🎜 🎜🎜옵션 3🎜🎜 🎜상태변수를 이용하여 매번 확인하고, 조건이 만족되면 콜백을 실행합니다. 추악한 방법, 사용하지 마세요. 🎜
Peter_Zhu

파라미터를 설정하고, 설정을 실행한 후 매번 콜백 판정을 입력합니다..

某草草

콜백 지옥의 경우 Promise 또는 유사한 라이브러리를 사용하세요.

巴扎黑

으아아아

내 솔루션이 약간 낮습니다. . ?

迷茫

2층이 맞습니다. 약속을 이용하여 해결하세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿