Узел
является асинхронным, поэтому в то время, когда вы выполняете console.log
, myIncomingData
все еще не определен (вы можете даже увидеть это по порядку console.logs
- сначала он будет регистрировать, что неопределенное изэтот второй console.log
, а затем он будет регистрировать console.log
, который находится в обратном вызове).Если вы хотите увидеть это в действии, вы можете попробовать сделать что-то вроде setTimeout(() => console.log(myIncomingData), 5 * 1000)
- задержав 5 секунд, вы можете быть уверены, что код обратного вызова будет запущен, и если вы захотите сделать что-нибудь еще с этим значением,вам нужно будет сделать это из-за обратного вызова (либо встроенного, либо вызвав другую функцию)
async/await
или Promises
может создать такой кодлегче читать и рассуждать о.Если вы хотите продолжать использовать обратные вызовы, стоит взглянуть на учебник по обратным вызовам, чтобы убедиться, что вы понимаете, что с ними происходит.