Получать файлы cookie синхронно

Я знаю, что электрон работает над обещанием своих вызовов api, но я думаю, что тем временем нашел решение, однако оно не совсем работает.

В моей функции создания окна у меня есть следующее ...

const mainSession = mainWindow.webContents.session
const getCookies = util.promisify(mainSession.cookies.get)
const cookies = await getCookies({})
console.info(cookies)

Я считаю, что он уничтожает объект до того, как обещание разрешится на основе этой ошибки, которую я получаю.

 (node:21863) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Object has been destroyed

Причина, по которой мне нужны файлы cookie синхронно, заключается в том, что я создаю метод входа в систему для своего приложения canvasFileSync для создания токена долгосрочного доступа (для проверки подлинности синхронизации). Этот метод должен быть достаточно динамичным, чтобы работать на странице входа в любую школу, где он будет, по сути, «продолжать попытки» создать токен долгосрочного доступа, пока не добьется успеха.

Думаю, вы можете представить, что создание этой синхронной системы действительно упростило бы процесс.

Любая помощь или указатели были бы очень признательны!

Обновлено: добавлен весь соответствующий код

const electron = require('electron')
const util = require('util')
const _ = require('lodash')
const request = require('request-promise')
// Module to control application life.
const app = electron.app
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow

const path = require('path')
const url = require('url')

let mainWindow

async function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({width: 800, height: 600})


  // and load the index.html of the app.
  mainWindow.loadURL('https://suu.instructure.com')

  mainWindow.on('closed', function () {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null
  })

  try {
    const mainSession = mainWindow.webContents.session
    const getCookies = util.promisify(mainSession.cookies.get)
    const cookies = await getCookies({})
    console.info(cookies)
  } catch(err) {
    console.info(err)
  }
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)
await НЕ синхронный. Вы вроде как запрограммируете его с помощью синхронно выглядящего кода, но это не синхронно. Пока он ожидает, функция хоста возвращается, и выполняется другой код. Это асинхронный, просто другой способ асинхронного программирования.
jfriend00 10.08.2018 00:05

При использовании await кто-то должен обнаруживать ошибки либо с помощью .catch() в возвращаемом значении из содержащей функции, либо с помощью try/catch вокруг await. Вам нужно будет показать нам больше вашего кода, чтобы мы могли точно определить, что вам следует делать и откуда эта ошибка.

jfriend00 10.08.2018 00:06

Спасибо! Я только что добавил соответствующий код. Я предполагаю, что реальный вопрос, который я хочу задать, заключается в том, как мне обрабатывать синхронный захват файлов cookie в электронном виде?

Drew Royster 10.08.2018 00:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
433
0

Другие вопросы по теме