Что такое _id в Object, возвращаемом обещанием? - PullRequest
0 голосов
/ 08 мая 2018

Я использую модуль Promise в Node.js для чтения файлов в каталоге, как показано ниже.

var promise = require("promise");
var fs = require("fs");
var readdir = promise.denodeify(fs.readdir);

var readDirPromise = readdir("/Users/sashi/Documents/javascript/telegram")
    readDirPromise
Promise {
  _75: 0,
  _83: 1,
  _18: 
   [ '.DS_Store',
     'arica.txt',
     'iquitos.txt',
     'lapaz.txt',
     'puntaarenas.txt',
     'testingSashi_bot.js' ],
  _38: null }

Что такое _75, _83, _18, _38? Будут ли они всегда одинаковыми числами? Как получить мой список файлов, я всегда могу сделать

console.log(readDirPromise._18)

Или цифры меняются в зависимости от ситуации?

Заранее спасибо:)

Edit:

Я немного поэкспериментировал. Похоже, _83 используется, чтобы показать, выполнено ли обещание или нет.

  • _83: 0 (Обещание не выполнено)
  • _83: 1 (Обещание выполнено и ошибок нет)
  • _83: 2 (Обещание разрешено, но где-то есть ошибка)

См. Ниже.

function readJSON(filename){
    return readFile(filename,'utf8').then(JSON.parse,console.log);
}

Когда обещание еще не выполнено.

readJSON("./Places/arica.txt")
Promise { _75: 0, _83: 0, _18: null, _38: null }

Если обещание выполнено, но есть ошибка.

 Promise {
  _75: 0,
  _83: 2,
  _18: SyntaxError: Unexpected token I in JSON at position 0
    at parse (<anonymous>)
    at tryCallOne (/Users/sashi/node_modules/promise/lib/core.js:37:12)
    at /Users/sashi/node_modules/promise/lib/core.js:123:15
    at flush (/Users/sashi/node_modules/asap/raw.js:50:29)
    at process._tickCallback (internal/process/next_tick.js:172:11),
  _38: null }

Если Обещание выполнено без ошибок.

Promise {
  _75: 0,
  _83: 1,
  _18: 
   { name: 'lapaz',
     description: 'La Paz is the capital of Bolivia. It is one of my favorite cities because its crazy.' },
  _38: null }

1 Ответ

0 голосов
/ 08 мая 2018

Я бы не стал использовать что-либо, начинающееся с _, так как это возможно только для внутреннего использования.

Кстати, зачем использовать _18, когда это обещание? Вы всегда можете .then и получить результат. Смотрите пример ниже

const fs = require('fs')
const { promisify } = require('util')
const readdir = promisify(fs.readdir)

readdir('/Users/anh/Documents')
.then(function (files) {
  console.log(files)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...