الزاوي استرجاع البيانات من API

0

أنا أعمل على استرداد البيانات من واجهات برمجة تطبيقات مختلفة وأواجه بعض المشكلات.

الجزء الأول يعمل بشكل جيد ، الرمز أدناه:

ngOnInit(): void {
  this.http.get('http://.../api/getData?table=getdata&filter=remediation_status:1')
    .subscribe( data => { this.incidents = data, console.log(data);})
}

بالنسبة للخطوة الثانية ، أحاول استرداد البيانات من عنوان URL آخر لواجهة برمجة التطبيقات وفي نفس المكون باستخدام القيم التي تم استردادها أثناء الخطوة الأولى ولكن يُنظر إليها على أنها "غير محددة".

For example `console.log(this.incidents); ` returns "undefined" while it's defined just above. 

هل من الممكن القيام باسترجاع البيانات من واجهة برمجة التطبيقات واستخدامها في نفس المكون (في ngOnInit () :) أم لا؟ شكرا لكم مقدما

1 إجابة

0

أفترض أن الكود الثاني يتبع الكود الأول ، لذا دعني أشرح قليلاً:
سيتم قراءة التعليمات البرمجية الخاصة بك بهذه الطريقة:

  • ستبدأ مكالمة HTTP الخاصة بك ، لكنها لا توقف تدفق التعليمات البرمجية
  • سيتم تشغيل الكود الموجود بعد استدعاء HTTP ، حتى لو لم يتم HTTP
  • سيكون المتغير الذي قمت بتعيينه في مكالمة HTTP غير معرف لأنه لم يتم الانتهاء من مكالمة HTTP
  • في جزء ما سيكون للمتغير الخاص بك بيانات لأنه سيتم إجراء مكالمة HTTP ، ولكن ليس في اللحظة التي تريدها

لذلك ، هناك طريقتان للتعامل مع هذا:

  • يمكنك تعيين الرمز الثاني الذي لديك في وظيفة ، واستدعاء تلك الوظيفة من طريقة الاشتراك في طلب HTTP الخاص بك ، وبهذه الطريقة ، سيكون لديك البيانات التي تحتاج إلى استهلاكها
  • يمكنك استخدام المتزامن والانتظار للانتظار "حتى يتم تنفيذ طلب HTTP الخاص بك ، ومواصلة تنفيذ الرمز ، فهذا يعني أنه سيقرأ مكالمة HTTP الخاصة بك ، ولكنه لن يستمر في تنفيذ التعليمات البرمجية الخاصة بك" حتى يتم ذلك ، يمكنك قراءة المزيد عن هذا هنا وهنا
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام