كيف نحصل على قيمة حقيقية لأمر "get" ليست "حقيقية"؟
مرحبًا yuany - هذه مكتبة Node.js تقليدية حيث توفر عمليات رد
بمعنى آخر:
client.get("foo", function (error, value) { /* ... */ })
هذا نتيجة للطريقة التي يعمل بها Node.js ، تتم عمليات الإدخال / الإخراج بشكل غير متزامن.
القيمة المرجعة لهذه الوظائف هي _not_ القيمة.
شكرًا ، brycebaril لقد جربت الوظيفة مثل هذا:
var result = client.get ("foo"، function (error، value) {return value})؛
تنبيه (نتيجة) ؛ // ستكون النتيجة "خطأ" أو "صواب" ، لكنني أريد إرجاع القيمة الحقيقية بالمفتاح من redis.
مرحبًا yuany - هذه ليست الطريقة التي تعمل بها العقدة عندما تقوم
يوفر رد النداء سياق لتنفيذه عندما تكون النتيجة متاحة. سيتم تشغيل جميع التعليمات البرمجية الأخرى التي لا تعتمد على الإدخال / الإخراج أثناء وضع عملية الإدخال / الإخراج في قائمة الانتظار وتنفيذها وانتظار الرد.
إليك مكانًا جيدًا لمعرفة المزيد حول كيفية عمله: https://github.com/maxogden/art-of-node#callbacks
على سبيل المثال
client.get("foo", function (error, value) {
// value is only defined in the context of this callback
console.log(value)
})
// this parent code has already executed, before it asked Redis for the value
شكرًا ، brycebaril أنا واضح الآن ، مشكلة تنفيذ وظيفة رد الاتصال غير متزامن.
التعليق الأكثر فائدة
مرحبًا yuany - هذه مكتبة Node.js تقليدية حيث توفر عمليات رد
بمعنى آخر:
هذا نتيجة للطريقة التي يعمل بها Node.js ، تتم عمليات الإدخال / الإخراج بشكل غير متزامن.
القيمة المرجعة لهذه الوظائف هي _not_ القيمة.