تسمى وظيفة تلميح Bootstrap بشكل غير متزامن. كيف تنتظر حتى تنتهي قبل استدعاء الوظيفة التالية؟

0

في وظيفتي أدناه أريد التأكد من ذلك أولاً tooltip("destroy") ينتهي ، ثم السطر التالي takeScreenshot() يعدم. للأسف تنص وثائق Bootstrap الرسمية على ذلك tooltip("destroy") هي دالة غير متزامنة ، لذلك في التعليمات البرمجية أدناه ، takeScreenshot() يتم تنفيذه ، حتى قبل تدمير تلميح الأدوات.

لقد جربت حاليًا طريقتين:

النهج 1: استخدم Async - Await: هذا لم يحل المشكلة.

الطريقة 2: استخدم setTimeout لتأخير تنفيذ takeScreenshot() . أدى هذا إلى حل المشكلة ولكن يبدو أنه اختراق لا حل قياسي.

هل هناك طريقة في جافا سكريبت أو Jquery يمكنني حل هذه المشكلة؟

فيما يلي الكود الخاص بي الذي لا يعمل بشكل متزامن :(

const processScreenshot = () => {
  $('#draggableDiv').tooltip("destroy"); // this line is asynchronous in nature
  takeScreenshot()  // this line gets executed 1st before previous line returns
}

1 إجابة

2
افضل جواب

لأنك تذكر "تدمير" بدلاً من التخلص (يستخدم Bootstrap 4 التخلص لصالح التدمير) ، أعتقد أنك تستخدم Bootstrap 3.x. مع هذا الافتراض ، يجب أن تكون قادرًا على الاستماع إلى "hidden.bs.tooltip" كما يلي:

$('#myTooltip').on('hidden.bs.tooltip', function () {
  // do something…
})

المرجع: https://getbootstrap.com/docs/3.3/javascript/#tooltips وتأكيد السلوك المقصود / طلب الدمج لحل المشكلة حيث تم كسر هذا: https://github.com/twbs/bootstrap/issues/13031

سيتيح لك ذلك التأكد من إخفاء تلميح الأدوات على الأقل. لا أرى أي أحداث يتم تدميرها بالفعل.

:مؤلف

أسئلة ذات صلة

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