تعليق: عمال الويب هي تقنية جديدة تم إضافتها في HTML5 لتنفيذ معالجة الخلفية في تطبيقات الويب.
عمال الويب هي تقنية جديدة تم إضافتها في HTML5 لتنفيذ معالجة الخلفية في تطبيقات الويب.
في HTML4 ، تكون البرامج التي أنشأتها JS كلها واحدة. إذا استغرق الأمر وقتًا طويلاً ، فلن تستجيب واجهة الويب لفترة طويلة. في أسوأ الحالات ، سوف يظهر مربع موجه النصوص:
يطالب أن البرنامج النصي يعمل لفترة طويلة ، سواء للمتابعة. . . . لذلك تم تقديم بطل هذه المقالة: API عمال الويب
يمكن أن يؤدي استخدام مستخدمي API هذا بسهولة إنشاء مؤشرات ترابط تعمل في الخلفية ، ومن السهل جدًا إنشاء برامج خلفية:
var Worker = New Worker ('*. JS') ؛
ملاحظة: لا يمكن لخيوط الخلفية الوصول إلى الصفحات أو كائنات النوافذ.
يمكن تمرير البيانات باستخدام مؤشرات ترابط الخلفية عن طريق إرسال الرسائل واستلام الرسائل:
worker.onmessage = function (e) {} ؛
worker.postMessage = function (e) {} ؛
لنتحدث عن التجميع:
<! doctype html>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<script type = "text/javaScript">
وظيفة حساب () {
var num = 10000000000 ؛
var r = 0 ؛
لـ (var i = 1 ؛ i <num ؛ i ++) {
r += i ؛
}
تنبيه (R) ؛
}
حساب () ؛
</script>
</head>
<body>
</body>
</html>
لذلك تم إعطاء إطاري الجميل. . . لكن استخدام عمال الويب لن:
<! doctype html>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<script type = "text/javaScript">
var Worker = New Worker ('C.JS') ؛
عامل.
التنبيه ('و:' + e.data) ؛
} ؛
وظيفة حساب () {
var num = 1000000 ؛
عامل. postmessage (num) ؛
}
حساب () ؛
</script>
</head>
<body>
</body>
</html>
onMessage = function (e) {
var num = e.data ؛
var r = 0 ؛
لـ (var i = 1 ؛ i <num ؛ i ++) {
r += i ؛
}
postmessage (R) ؛
}
أعتقد في بعض الأحيان ، لماذا أحسب مثل هذا العدد الكبير إذا لم يكن لدي ما أفعله. . . . . بالطبع هذه خدعة مملة ، لكنني أعتقد أن هناك سيناريو قد يتطلب ذلك.
عندما كنت أتعلم واجهة برمجة تطبيقات الملف في وقت سابق ، كانت هناك عملية لقراءة الملفات المحلية. إذا كان الملف كبيرًا جدًا ، فسيكون بطيئًا جدًا. أتساءل ما إذا كان يمكن تطبيق هذا؟ من الضروري تجربتها خلال الدراسة الثانية.
تفاعل البيانات مع المواضيع
نقوم بإكمال وظيفة هنا ، وننشئ مجموعة عشوائية في المقدمة ، ثم نعود إلى المقدمة للطباعة في الخلفية إذا كان يمكن أن يكون الحساب 3 من 3:
البرنامج الرئيسي
<! doctype html>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<style>
فترة
{
الحشو: 10 بكسل ؛
}
</style>
<script src = "../ jquery-1.7.1.js" type = "text/javaScript"> </script>
<script type = "text/javaScript">
$ (وثيقة). ready (function () {
var Worker = New Worker ('T1.js') ؛
عامل. postmessage ('') ؛
عامل.
var arr = e.data.split ('؛') ؛
لـ (var i = 0 ، len = arr.length ؛ i <len ؛ i ++) {
var dom = $ ('<span>' + arr [i] + '</span>') ؛
$ ('#body'). append (dom) ؛
}
}
}) ؛
</script>
</head>
<body>
<viv>
</div>
</body>
</html>
البرنامج الذي يولد صفيف
onMessage = function (e) {
var arr = [] ؛
لـ (var i = 0 ؛ i <100 ؛ i ++) {
arr.push (parseint (Math.Random () * 100)) ؛
}
var Worker = New Worker ('T2.js') ؛
Worker.PostMessage (json.stringify (arr)) ؛
عامل.
// أرسل نتائج التحديد مرة أخرى إلى مكتب الاستقبال
postmessage (e.data) ؛
} ؛
}
تحديد ما إذا كانت جميع البيانات في الصفيف مقسمة على 3
onMessage = function (e) {
var arr = json.parse (e.data) ؛
var str = '' ؛
لـ (var i = 0 ، len = arr.length ؛ i <len ؛ i ++) {
if (parseint (arr [i]) ٪ 3 == 0) {
if (str! = '') str += '؛' ؛
str += arr [i] ؛
}
}
postmessage (str) ؛
يغلق()؛
} ؛
وصف منطق البرنامج:
يتم استخدام تعشيش موضوع هنا
أولاً ، قم بتنفيذ برنامج المقدمة ، حيث تتم تهيئة خيط الطفل T1 لتهيئة 100 صفيف.
ثم يقوم خيط الطفل T1 بتهيئة مؤشر ترابط الطفل T2 (المستخدم لاجتياز الصفيف ، وإخراج الأرقام التي يمكن أن تكون قابلة للقسمة على 3 ، وتشكيل سلسلة) ، و T1 يمرر بيانات الصفيف إلى T2
يتلقى T2 بيانات T1 ، وبعد الحساب ، سيتم نقل السلسلة إلى T1 و T1 إلى مكتب الاستقبال ، وسيقوم مكتب الاستقبال بتنفيذ منطقه الخاص
تنتهي العملية
خاتمة
ببساطة ، أنا أعلن أن خيط الطفل هنا ، ثم إرسال البيانات إلى ما بعد الطفل الطفل ، ثم في انتظار النتيجة.
يبدو أنه بالإضافة إلى آخر مآخذ ويب API للاتصالات ، يمكن دمج اثنين في برنامج دردشة الويب ، وحتى بعض قواعد بيانات التخزين/المحلية المحلية يمكن استخدامها.
قد يكون هذا شيئًا جيدًا.