উত্তর:
আমি মনে করি যে কোনও ফাংশনের শেষ যুক্তি হিসাবে কলব্যাকগুলি আসার জন্য এটি একটি দরকারী সম্মেলন। উদাহরণস্বরূপ নোড.জেএসআই এপিআই-তে সাধারণত এটি হয়। তাই মনে রেখে:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
মঞ্জুর, এটি আপনার করা প্রত্যেকটির জন্য একটি অতিরিক্ত ফাংশন কলের ওভারহেড যুক্ত করে setTimeout
; তবে আজকের জেএস দোভাষীগুলিতে, আপনি যদি প্রতি সেকেন্ডে কয়েক হাজার বার না করে থাকেন তবে পারফরম্যান্সের অপূর্ণতা তুচ্ছ। (এবং আপনি প্রতি সেকেন্ডে কয়েক হাজার টাইমআউটগুলি সেট করছেন কী?)
অবশ্যই, আরও সহজ সরল পদ্ধতি হল আপনার কলব্যাকের নামকরণ করা, যা যাইহোক আরও পঠনযোগ্য কোড তৈরি করতে ঝোঁক দেয় (জাশকানাস এই মূর্খতার একটি বড় অনুরাগী):
callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
something param
), 1000
প্রথম বন্ধনী alচ্ছিক, তবে কমা দিয়ে লাইন শুরু করা আমার কাছে অগোছালো মনে হয়েছিল।
setTimeout
উদ্বোধনী পেরেনের মধ্যবর্তী স্থানটি গুরুত্বপূর্ণ। সেখানে স্থান মানে বন্ধনীগুলি সেটটাইমআউটের প্রথম প্যারামিটার হিসাবে বন্ধের চারপাশে রয়েছে; যদি এটি টি এর পরে সরাসরি হয় তবে কফস্ক্রিপ্টটি উভয় পরামিতিগুলি বন্ধনীগুলি প্রত্যাশা করবে।
setTimeout ->
something param
, 1000
something param
একই লাইনে থাকে তবে setTimeout
এটি পৃথকভাবে পার্স হয়।
এটি মোটামুটি সমতুল্য অনুবাদে ফলাফল দেবে (ধন্যবাদ @ জোয়েল মুয়েলার):
setTimeout (-> something param), 1000
মনে রাখবেন যে এটি হুবহু অনুবাদ নয় কারণ বেনামে ফাংশন something(param)
আপনার স্নিপেটের মতো অপরিজ্ঞাত পরিবর্তে কল করার ফলাফল দেয় ।
setTimeout (() -> something param), 1000
আমি এটি করতে সবচেয়ে ভাল পদ্ধতিটি খুঁজে পাই,
setTimeout (-> alert "hi"), 1000