Coffeescript দ্বারা প্যারামের সাথে সেটটাইমআউট কীভাবে লিখবেন


208

দয়া করে আমাকে কফিস্ক্রিপ্টে জাভাস্ক্রিপ্ট কীভাবে লিখবেন তা বলুন।

setTimeout(function(){
    something(param);
}, 1000);

আমরা এতে কীভাবে .call ('হ্যালো') যুক্ত করতে পারি
অতুল

উত্তর:


214

আমি মনে করি যে কোনও ফাংশনের শেষ যুক্তি হিসাবে কলব্যাকগুলি আসার জন্য এটি একটি দরকারী সম্মেলন। উদাহরণস্বরূপ নোড.জেএসআই এপিআই-তে সাধারণত এটি হয়। তাই মনে রেখে:

delay = (ms, func) -> setTimeout func, ms

delay 1000, -> something param

মঞ্জুর, এটি আপনার করা প্রত্যেকটির জন্য একটি অতিরিক্ত ফাংশন কলের ওভারহেড যুক্ত করে setTimeout; তবে আজকের জেএস দোভাষীগুলিতে, আপনি যদি প্রতি সেকেন্ডে কয়েক হাজার বার না করে থাকেন তবে পারফরম্যান্সের অপূর্ণতা তুচ্ছ। (এবং আপনি প্রতি সেকেন্ডে কয়েক হাজার টাইমআউটগুলি সেট করছেন কী?)

অবশ্যই, আরও সহজ সরল পদ্ধতি হল আপনার কলব্যাকের নামকরণ করা, যা যাইহোক আরও পঠনযোগ্য কোড তৈরি করতে ঝোঁক দেয় (জাশকানাস এই মূর্খতার একটি বড় অনুরাগী):

callback = -> something param
setTimeout callback, 1000

আপনার যদি নেস্টেড কলব্যাকের প্রয়োজন না হয় দুর্দান্ত
স্টিভেন প্রবিলিনস্কি

184
setTimeout ( ->
  something param
), 1000

প্রথম বন্ধনী alচ্ছিক, তবে কমা দিয়ে লাইন শুরু করা আমার কাছে অগোছালো মনে হয়েছিল।


পেরেনগুলি বের করুন এবং এক কাপ কফি পান করুন, ~)
বিলি মুন

4
আমার জন্য প্রথম বন্ধনীর সাথে সংকলন করে না। আমাকে সেগুলি সরিয়ে ফেলতে হয়েছিল, কমা দিয়ে লাইনটি শুরু করতে হয়েছিল এবং এটি একটি কবজির মতো কাজ করে।
জেরেমি থিল

বন্ধনীগুলির সাহায্যে আপনি এটি এক লাইনেও করতে পারেন।

1
@ জেরেমি থিল নোট করুন যে setTimeoutউদ্বোধনী পেরেনের মধ্যবর্তী স্থানটি গুরুত্বপূর্ণ। সেখানে স্থান মানে বন্ধনীগুলি সেটটাইমআউটের প্রথম প্যারামিটার হিসাবে বন্ধের চারপাশে রয়েছে; যদি এটি টি এর পরে সরাসরি হয় তবে কফস্ক্রিপ্টটি উভয় পরামিতিগুলি বন্ধনীগুলি প্রত্যাশা করবে।
জান্পিনস 21 শে

67
setTimeout -> 
  something param
, 1000

আপনি যদি কেবল একটি বেনামী ফাংশন ব্যবহার করতে চান তবে এটি সেরা।
অ্যালেক্স কে

এছাড়াও একটি নামকৃত কার্যক্রমে, টাইমআউট নামক ফাঙ্ক, 5000
ডার্ক স্মারসন

মনে রাখবেন যে সাদা স্থানটি গুরুত্বপূর্ণ। উপরের মতো কলটি অবশ্যই স্পেস করা উচিত। যদি something paramএকই লাইনে থাকে তবে setTimeoutএটি পৃথকভাবে পার্স হয়।
হেনরেবোথা

46

এটি মোটামুটি সমতুল্য অনুবাদে ফলাফল দেবে (ধন্যবাদ @ জোয়েল মুয়েলার):

setTimeout (-> something param), 1000

মনে রাখবেন যে এটি হুবহু অনুবাদ নয় কারণ বেনামে ফাংশন something(param)আপনার স্নিপেটের মতো অপরিজ্ঞাত পরিবর্তে কল করার ফলাফল দেয় ।


1
অনেক বেশি পেরেন / সেমিকোলন! এটি কফিস্ক্রিপ্ট, অতিরিক্ত প্যারেনগুলি থেকে মুক্তি পাওয়া অর্ধেক পয়েন্ট। setTimeout (() -> something param), 1000
জোয়েল মুয়েলার

নিকোলাস একটি ভাল বক্তব্য রেখেছেন যে খালি পেরেনগুলিও optionচ্ছিক।
জোয়েল মুয়েলার


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