וועב לאַקס אַפּי

קאָואָרדאַנאַט אַרבעט און די נוצן פון רעסורסן צווישן פאַרשידענע פּראַסעסאַז

צייט צו שלאָס אין

אַסינטשראָנאָוס פאַנגקשאַנז אין דזשאַוואַסקריפּט זענען נישט באמת פּאַראַלעל. סטאַרטינג מיט ES2017, Javascript האט שטיצן פֿאַר קאַנקעראַנט פונקציאָנירן רופט. די חילוק איז זייער נייסלי סאַמד דורך Madhavan Nagarajan אין די פאלגענדע דערקלערונג (לינק קענען זיין געפֿונען אין די אַדדענדאַם).

קאָנקורענסי איז וועגן האַנדלען מיט גורל פון טינגז אין אַמאָל. פּאַראַללעליסם איז וועגן טאן אַ פּלאַץ פון טינגז אין אַמאָל.

די ימפּלאַמענטיישאַן פון דזשאַוואַסקריפּט ס קאָנקוררענסי איז רידוסט אין זייַן פאַנגקשאַנאַליטי צו לאָזן אַ פּשוט און זייער געזונט אַפּי צו נוצן. אַסינק פאַנגקשאַנז קענען ניט זיין ינטעראַפּטיד און האָבן קיין באַגריף פון וואַלאַטאַל פּראָפּערטיעס ווען דילינג מיט אַקסעס צו די זעלבע בייַטעוודיק דורך פאַרשידענע ייסינגקראַנאַס קאַללס. די דיטיילד ימפּלאַמענטיישאַן פון די אַסינק פאַנגקשאַנז פון ES2017 איז אַרויס פון דעם פאַרנעם פֿאַר דעם אַרטיקל, אָבער די הויפּט פונט וואָס איך ווילן צו באַקומען איז אַז ביז איצט פּאַראַלעלליסם איז נישט געבויט אין דזשאַוואַסקריפּט און די וועב, און דעריבער, קיין ספּעציעל האַנדלינג פון פּאַראַלעל מיוטיישאַנז זעלביקער ענטיטי. אָבער דאָס ענדערונגען איצט מיט די הקדמה פון די "וועב לאַקס אַפּי".

איינער פֿאַר אַלע און אַלע פֿאַר איין

איצט, ווען פּראַגרעסיוו וועב אַפּפּס פאָרשלאָגן איר מולטיטהרעאַדעד אַרקאַטעקטשערז מיט די הקדמה פון וועבווערקערז און די סערוויסווערקער, די זאכן האָבן געביטן. אמת פּאַראַלעלאַליסם איז מעגלעך אין וועב אַפּפּס, און דעריבער די פאַרלאַנג פֿאַר מער סאַפיסטיקייטאַד מכשירים צו האַנדלען מיט פּאַראַלעל קאָד.

א שלאָס איז אַ מעקאַניזאַם צו בעטן אַקסעס צו רעסורסן און האָבן די גאַראַנטירן אַז בלויז איין פּראָצעס אין קיין פונט אין דער צייט טאַקע אַקסעס. אויב איר לאַקינג רעסורסן אַזוי ויסמיידן אַ גרויס גאַנג פון קאָנפליקט געביטן וואָס קען זיין אַנדערש.

א מיטל איז נאָר אַ נאַמעספּאַסע, יידענאַפייד דורך אַ שטריקל. און דיין בקשה צו אַקסעס די מיטל איז פּונקט ווי פּשוט, ווייַל איר נאָר דאַרפֿן די שייַן און אַ פֿונקציע קאַללבאַקק, רובֿ מסתּמא ייסינגקראַנאַס, צו ינסטרומענט די "וועב לאַק אַפּי". ווען איינער אַסינק פונקציאָנירן איז פאַרטיק, די שלאָס איז באפרייט און אנדערע ריקוועס קענען אַקסעס עס ווידער.

/*
 * A simple demonstration of the Web Lock API.
 * Note that this example has been taken from
 * MDN's awesome documentation, linked in the
 * addendum.
 */
async function foo(){
  // A common async function that you already know.
  const data = await getData();

  // Request the lock.
  // Note that we can simply await the locked call!
  await navigator.locks.request('lock_resource_id', async lock => {
    // The lock has been acquired.
    // At this point, this call has exlusive access 
    // to the resource 'lock_resource_id'.
    await updateDb(data);
    // Now the lock will be released.
  });
  
  // The lock has been released.
  // Continuse with plain async calls.
  await updateUi();
}

רעכט צו דער יקספּערמענאַל שטאַט פון דעם נייַ אַפּי, איר מוזן מייַכל עס ווי אַ אַפּשאַנאַל שטריך אין דיין קאָד מיט אַ גילטיק פאַלבאַקק בנימצא.

/**
 * Due to the usage of web locks in core parts
 * of your app, actually using the API this way
 * might introduce more problems then it could solve.
 * 
 * Therefore a thorough specification in your app
 * has to be implementation before using this feature.
 */
async function update(){
  if(navigator?.locks){
    // Run logic with lock.
  } else {
    // Use fallback.
  }
}

צו בעסער אילוסטרירן דעם נייַ אַפּי, מיר וועלן נעמען אַ קוק אין אַ פּשוט בייַשפּיל. זאָגן איר האָבן אַ מולטיטהרעאַדעד פּוואַ מיט דיין הויפּט פּראָצעס און צוויי וועבווערקערז. דיין אַפּ אויך ניצט אַן ינדעקסדב, מיט מנהג קאָד אַז סינקס ענדערונגען צו און פֿון די דאַטאַבייס מיט די וואָלקן. ניצן דעם "וועב לאַק אַפּי" אין דעם סצענאַר, יעדער פּראָצעס קענען בעטן אַקסעס צו די דיפיינד שלאָס פֿאַר סינסינג ענדערונגען צו די דאַטאַבייס, אַזוי זיכער אַז קיין אנדערע מיוטיישאַנז לויפן בעשאַס דעם רוף.

באַמערקונג אַז די "וועב לאַק אַפּי" איז ניט אַזוי פיל וועגן מיוטיישאַן פון אַ איין בייַטעוודיק אָן זייַט יפעקס אין דיין וועב אַפּ (כאָטש דאָס קען זיין אַ נוצן פאַל), אָבער מער וועגן האַנדלינג פונקציאָנירן רופט אין אַ פּאַראַלעל אַרקאַטעקטשער וואָס אַנדערש קען פירן צו נעגאַטיוו זייַט יפעקס.

פיל מער צו לערנען

דער אַרטיקל האָט בלויז געגעבן אַן הקדמה צו די נייַע "וועב לאַקס אַפּי", וואָס איז דערווייַל אין יקספּערמענאַל סטאַטוס און דער הויפּט געשטיצט דורך קראָומיאַם-באזירט בראַוזערז. די API אָפפערס מער אָפּציעס וואָס זענען דיסקרייבד דאָ און עס איז ווערטיק צו קוקן אין עס.

פֿאָרשלאָגן

פֿאַרבונדענע

נאָך-וואָרט

שפּראַכן