জাভাস্ক্রিপ্টকরে ওয়েবওয়ার্কারের প্রসঙ্গে কীভাবে একটি নতুন নেটিভ ক্লাস যুক্ত করবেন?


102

আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা একটি ওয়েবকিট-জিটিকে ব্রাউজারে জাভাস্ক্রিপ্টের মাধ্যমে জাভাস্ক্রিপ্ট প্রসারিত করে। এই মুহূর্তে আমার বেশ কয়েকটি ক্লাস রয়েছে যা আমি বিশ্বব্যাপী প্রসঙ্গে যুক্ত করেছি:

void create_js(gpointer context, char* className, JSClassDefinition clasDefinition) {
    JSClassRef classDef = JSClassCreate(&clasDefinition);
    JSObjectRef classObj = JSObjectMake(context, classDef, context);
    JSObjectRef globalObj = JSContextGetGlobalObject(context);
    JSStringRef str = JSStringCreateWithUTF8CString(className);
    JSObjectSetProperty(context, globalObj, str, classObj, kJSPropertyAttributeNone, NULL);
    JSStringRelease(str);
}

এখন, আমি ওয়েব ওয়ার্কারের প্রসঙ্গে সেই ক্লাসগুলি যুক্ত করতে চাই, তাই আমি জেএসে তাত্ক্ষণিকভাবে কর্মীদের কাছ থেকে তাদের কল করতে পারি।

আমি Workerবস্তুটি এভাবে পাওয়ার চেষ্টা করেছি :

JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);

কিন্তু এটি এটিতে যুক্ত করে WorkerConstructorএবং যখন একটি new Worker()ডাকা হয় তখন ক্লাসগুলি উপলব্ধ হয় না।


1
আপনার প্রয়োজনীয়তা সম্পর্কে ঠিক নিশ্চিত না। তবে আমি মনে করি আমরা একটি স্ক্রিপ্ট অন্তর্ভুক্ত করতে পারি যা এটি কর্মী ফাইলে করে। এটার মত. আমদানি স্ক্রিপ্টস ("গ্লোবাল ওয়ার্কার.জেএস")
রাজেশ

1
আপনি বিশ্বব্যাপী প্রেক্ষাপটে শ্রমিক শ্রেণি স্থাপন করছেন, আপনি তাদের ওয়েব ওয়ার্কারের প্রসঙ্গে মূল প্রসঙ্গটি হিসাবে যুক্ত করা উচিত নয় কারণ দুটি প্রসঙ্গটি ভিন্ন।
করিম এইচ

4
আপনি Workerশ্রেণি সংজ্ঞায় নতুন নির্মিত শ্রেণিকে যুক্ত করার চেষ্টা করছেন । সাধারণত আপনার ক্লাসটি গ্লোবাল অবজেক্টে এবং প্রতিটি গ্লোবাল অবজেক্টে একটি নতুন তৈরি জেএস ভার্চুয়ালমাচিনে যুক্ত করা দরকার। এটির বৈশ্বিক প্রসঙ্গ এবং বৈশ্বিক অবজেক্টের সাথে Workerএকটি নতুন তৈরি করবে JSVirtualMachine; একটি সম্পূর্ণ
বিচ্ছিন্ন পরিবেশ

উত্তর:


1

WorkerGlobalScopeবেশিরভাগ সাধারণ ব্রাউজার বাস্তবায়নে কোনও ওয়েব কর্মী শুরুর আগেই তুলনামূলক স্কোপগুলি / প্রসঙ্গগুলি সংশোধন করার কোনও উপায় নেই । এই নির্দিষ্ট ওয়েব কর্মী চালু হওয়ার সাথে সাথে এই স্কোপগুলি কেবলমাত্র ওয়েব কর্মীদের প্রসঙ্গে উপলব্ধ হবে।

ভাগ করা পদ্ধতিগুলি ব্যবহারের একমাত্র উপায় হ'ল পৃথক ভাগ করা ফাইল / সংস্থানগুলিতে তাদের সংজ্ঞা দেওয়া এবং সেগুলি ব্যবহার করে অন্তর্ভুক্ত করা importScripts()

self.importScripts('foo.js');
self.importScripts('foo.js', 'bar.js', ...);
importScripts('foo.js');
importScripts('foo.js', 'bar.js', ...);

দ্রষ্টব্য: importScripts() এবং self.importScripts()কার্যকরভাবে সমতুল্য - উভয়ই importScripts()শ্রমিকের অভ্যন্তরের ক্ষেত্রের ভিতরে থেকে ডেকে আনা প্রতিনিধিত্ব করে।


সোর্স


0

ওয়ার্কারগ্লোবালস্কোপের সাথে সংস্থানগুলি ভাগ করতে "আমদানি স্ক্রিপ্টস ()" ব্যবহার করুন

importScripts('resource.js');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.