Доступ к переменной, установленной в курсоре вне курсора в IndexedDb - PullRequest
0 голосов
/ 28 марта 2019

Я хочу напечатать значение переменной "set", которое я установил внутри курсора, вне объекта моего курсора.

      request.onsuccess = function(e){
      var set = 0;
      var transaction = db.transaction(['List'], "readonly");
      var objectStore = transaction.objectStore('List');

      objectStore.openCursor().onsuccess = function(event) {
        var cursor = event.target.result;
        if(cursor) {
        // console.log(cursor.value.Name);
        if (cursor.value.Name == $('#card').val())
        {
          console.log("aisa kabhi hoga hi nahi");
          set = 1;
        }

          cursor.continue();
        } 
        else 
        {
          console.log('Entries all displayed.');
          if (set == 0)
          {
             set= ippp();
             console.log(set);

          }
        }
      };
      console.log(set);
      }

Когда я печатаю переменную set внутри курсора, как показано «напечатаны правильные данные».

Но когда я пытаюсь распечатать данные переменной «set» вне курсора, то значение, которое я объявил, изначально печатается. «Как это возможно, когда я сбрасываю значение переменной в моем курсоре»

Мой вопрос: как мне получить доступ к значению, которое я установил для переменной «set» внутри курсора, вне объекта курсора.

1 Ответ

0 голосов
/ 29 марта 2019

Вам необходимо узнать об асинхронном программировании перед использованием indexedDB. Настоящий ответ - пойти и научиться этому.

Однако в качестве быстрого ответа вы можете использовать функцию обратного вызова.

function outerFunction(myCallbackFunction) {
  // do stuff
  request.onsuccess = function(event) {
    var cursor = event.target.value;

    var value = cursor.value;

    // Here is the whole trick to getting the value out. Pass the value to the 
    // callback function.
    myCallbackFunction(value);
  };
}

// Then to call it, you do something like this, where 'oncompleted' 
// is the name of the callback function

outerFunction(function oncompleted(value) {
  console.log('The value is', value);
});
...