رضا بقیعی
4 سال پیش توسط رضا بقیعی مطرح شد
4 پاسخ

برگشت مقدار در callback function

سلام . مقدار points داخل لاگ اول به درستی نمایش داده میشه اما داخل لاگ دوم ی ابجکت خالی بهم نشون میده سوال اینجاس که چجوری بهش دسترسی داشته باشم در خارج از callback function ؟؟؟

crypto.find({ "date": moment().format("YYYY-MM-DD hh:") + '00' }, function (err, result ) {
            if (result.length > 0) {
                result.forEach(signal => {
                    ++x
                    points[x] = {};
                    for (let i = 0; i < 4; i++) {

                        if (i == 1) {
                            let currentPrice = self.getCurrentPrice(moment(signal.date).add(i, 'hours').format("YYYY-MM-DD hh:mm"), );
                            points[x][i] = { currentPrice: currentPrice }
                        } else if (i == 2) {
                            let currentPrice = self.getCurrentPrice(moment(signal.date).add(i, 'hours').format("YYYY-MM-DD hh:mm"), );
                            points[x][i] = { currentPrice: currentPrice }
                        } else if (i == 3) {
                            let currentPrice = self.getCurrentPrice(moment(signal.date).add(i, 'hours').format("YYYY-MM-DD hh:mm"), );
                            points[x][i] = { currentPrice: currentPrice }
                        }
                    }

                });

            }

         console.log(points); // loged true value
         return points;

        }).sort({ createdAt: -1 })

        console.log(points); // loged {} empety object

ثبت پرسش جدید
رضا بقیعی
تخصص : برنامه نویس وب
@rezab7913 4 سال پیش مطرح شد
0

@hesammousavi کمک کنیددد لطفااااااا


سهیل حیدری
@hbr 4 سال پیش مطرح شد
1

با سلام
تابعی که این دستور crypto.find رو داخلش نوشتید async کنیدش و بعد قبل این دستور بزنید await و بعدش

قبل این crypto.find دستور
بزنید let point;
.sort({ createdAt: -1 }).then((result)=>{
//حالا اینجا عملیات رو انجام بدید
//نتیجه رو بریزید داخل point
})

//حالا به point دسترسی دارید


سهیل حیدری
@hbr 4 سال پیش مطرح شد
1
//تابعی که داخلش این دستورات هست حتما باید async باشه
let point=null;
await crypto.find({ "date": moment().format("YYYY-MM-DD hh:") + '00' }).sort({ createdAt: -1 }).then((result)=>{

            if (result.length > 0) {
                result.forEach(signal => {
                    ++x
                    points[x] = {};
                    for (let i = 0; i < 4; i++) {

                        if (i == 1) {
                            let currentPrice = self.getCurrentPrice(moment(signal.date).add(i, 'hours').format("YYYY-MM-DD hh:mm"), );
                            points[x][i] = { currentPrice: currentPrice }
                        } else if (i == 2) {
                            let currentPrice = self.getCurrentPrice(moment(signal.date).add(i, 'hours').format("YYYY-MM-DD hh:mm"), );
                            points[x][i] = { currentPrice: currentPrice }
                        } else if (i == 3) {
                            let currentPrice = self.getCurrentPrice(moment(signal.date).add(i, 'hours').format("YYYY-MM-DD hh:mm"), );
                            points[x][i] = { currentPrice: currentPrice }
                        }
                    }

                });

            }

         console.log(points); // loged true value
         //return points;

        }

)

        console.log(points); // loged {} empety object

رضا بقیعی
تخصص : برنامه نویس وب
@rezab7913 4 سال پیش مطرح شد
0

@khosravi424
ممنون حل شد !


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام