javascript - নোড.জেএস.5.৫-তে 'অপ্রত্যাশিত শনাক্তকারীর জন্য অপেক্ষা করুন'



node.js asynchronous (2)

অন্যদের দ্বারা প্রত্যাশিত হিসাবে async এর মধ্যে কাজ করবে। সুতরাং আপনি ব্যবহারটি এড়াতে নীচের কোডটি ব্যবহার করতে পারেন:

async function callX() {
    let x_value = await x();
    console.log(x_value);
}

callX();

আমি নোড.জেএস-তে অপেক্ষার কীওয়ার্ডটি নিয়ে পরীক্ষা নিরীক্ষা করছি আমার এই পরীক্ষার স্ক্রিপ্ট রয়েছে:

"use strict";
function x() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
}
await x();

তবে আমি নোডে চালানোর সময় আমি পাই

await x();
      ^
SyntaxError: Unexpected identifier

আমি এটিকে node বা node --harmony-async-await বা নোড.জেএস'র 'রেপেল' নোড.জেএস 7.5 বা নোড.জেএস 8 (নাইট বিল্ড) দিয়ে আমার ম্যাকের সাথে।

অদ্ভুতভাবে, একই কোডটি রুনকিট জাভাস্ক্রিপ্ট নোটবুক পরিবেশে কাজ করে: https://runkit.com/glynnbird/58a2eb23aad2bb0014ea614b

আমি কি ভুল করছি?


Answer #1

অন্যরা যেমন বলেছে, আপনি async ফাংশনের বাইরে 'অপেক্ষা' করতে পারবেন না। তবে এটিকে ঘুরে দেখার জন্য আপনি অপেক্ষা করা x () কে মোড়াতে পারবেন; একটি অ্যাসিঙ্ক ফাংশন কলে। অর্থাত,

function x() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
}
//Shorter Version of x():
var x = () => new Promise((res,rej)=>setTimeout(() => res({a:42}),100));

(async ()=>{
    try{
      var result = await x();
      console.log(result);
    }catch(e){
      console.log(e)
    }
})();

এটি নোড 7.৫ বা তারও উপরে কাজ করবে। ক্রোম ক্যানারি স্নিপেটস অঞ্চলেও কাজ করে।





asynchronous