묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
동기, 비동기 처리
코드복습중에 비동기, 동기처리 관련하여 궁금한점이 생겨 질문합니다! const User = require('../models/user'); const bcrypt = require('bcrypt'); exports.join = async (req, res, next)=>{ const { nick, email, password } = req.body; try { const exUser = await User.findOne({where: {email}}); if(exUser){ return res.redirect('/join?error=exist') } const hash = await bcrypt.hash(password, 14); await User.create({ nick, email, password: hash, }); return res.redirect('/'); } catch(err){ console.error(err); next(err); } }위의 코드가 수업중에 작성하신 코드입니다 여기서 아래부분만 이처럼 await를 뺀 상태로 변경하였는데,const exUser = User.findOne({where: {email}});if(exUser)가 true값이 되어return res.redirect('/join?error=exist')으로 빠지게 되었습니다. 제가 이해하기로는 await가 붙은 비동기 처리들은 동기처리들이 완료되어 호출스택이 비기전까지는 task큐에서 대기하는 것으로 알고 있는데,위의 현상대로면 await가 붙은 아래 코드 2개가 먼저 실행되고const hash = await bcrypt.hash(password, 14); await User.create({ nick, email, password: hash, }); 이 코드가 실행된 것 같은데const exUser = User.findOne({where: {email}}); 왜 이런 현상이 발생하는지 궁금합니다!!! 감사합니다
-
해결됨Flutter 앱 개발 기초
Dart의 비동기 함수에 대한 aysnc, await 질문입니다.
Dart에서 비동기로 함수가 동작하려면 async, await 키워드를 사용하는 것으로 알고 있었는데요.. 강의 자료에서 4회차 강의 5:24에 보시면 비동기 관련 소스코드 설명이 동영상과 자료에 있습니다. --------------------------------------------------------- HTTP 요청은 응답까지 시간이 걸리기 때문에 비동기 코드입니다. 따라서 동기로 작동하려면 아래와 같이 async & await을 추가하면 됩니다. main() async { Response result = await Dio().get("URL"); print(result.data); } ---------------------------------------------------------- 그런데, 위의 소스가 비동기로 동작하는 소스 같은데, "동기로 동작하려면" 이라고 되어 있어서요. 오타인지? 아니면 제가 잘 모르는 부분이 있는건지 설명 부탁드립니다.
-
해결됨함수형 프로그래밍과 JavaScript ES6+
await 원리 질문 드립니다
항상 답변 해주셔서 감사합니다 async함수에서 await 키워드의 원리가 제가 생각한 것이 맞는지 궁금합니다. 1. 전역 실행 컨택스트 생성후 콜스택 푸시 2. foo 함수 실행 -> foo 실행 컨택스트 생성 후 콜스택 푸시 3. delay1000 함수 실헹 4. 프로미스 생성자 함수가 전달받은 콜백함수를 web api에 넘기고 프로미스 객체를 반환하고 종료 5. foo 실행 컨텍스트에서 await 키워드로 인해 프로미스가 settled 상태가 될 때까지 대기 6. webapi에서 콜백함수 처리 후 프로미스 상태 fulfilled로 변경 7. 런타임 이어서 진행 const delay1000 = async a => new Promise(resolve => setTimeout(() => resolve(a), 1000)); const foo = async () => { const bar = await delay1000(1111); console.log(bar); } foo();
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
비동기 방식에 대해 질문올려봅니다.
안녕하세요. 그랩님 그랩님 강좌를 잘 보고 있는 한 수강생입니다. 다름이아니라 강의 내용과는 별개의 내용이지만 그랩님을 통해 자바스크립트를 배우고 여러가지 배웠기 때문에 그랩님께 질문 남겨봅니다. const getData = async () => { try { const result = await axios.get( "https://b2ef45f8-e166-41d7-bd35-9ad159028fbf.mock.pstmn.io/test" ); const products = result.data.products; console.log(products); console.log(`status:(${result.status}) 통신을 성공했습니다!`); const data = JSON.stringify(products); return data; } catch (err) { console.error(err); console.log("결과를 가져오지 못했습니다."); return err; } }; console.log(getData()); 위에 코드는 프로미스 형식의 axios객체를 async, await을 이용해 then과 catch등을 축약해서 제가 만든 포스트맨 목서버의 데이터를 get메서드로 불러와서 결과값을 확인하는 코드입니다. 실행에는 문제가 전혀 없습니다. 그런데 제가 궁금한 것은 getData 함수 표현식이 async로 감싸져 promise객체를 받아 비동기 처리가 되어서 console.log(getData())가 먼저 실행된 뒤에 getData 함수가 실행된다는것은 알고있습니다. 허나 만약에 비동기 함수에서 리턴값을 받아 출력을 하고 싶을 때는 어떤 처리를 해야 하는지가 궁금합니다. 만약 코드가 실행되면 console.log(getData())가 실행될 때 Promise { <pending> }가 출력이 되었습니다.
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
createBlog가 await하는 동안
createblog가 awiat 하는 동안 또 불리면 어떻게 되나요? 예를들어 여러명의 유저가 동시에 createBlog를 호출하게되면 계속 await하고 다음거 await 처리할때까지 대기 하고 있을 것 같은데... 이런 경우 어떻게 처리되나요??