承诺返回的Object中的_id是什么?

时间:2018-05-07 23:07:38

标签: node.js promise

我在Node.js中使用Promise模块来读取目录中的文件,如下所示。

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)

或者数字会根据情况而改变吗?

提前谢谢你:)

修改

我实验了一下。看起来_83用于表示承诺是否得到解决。

  • _83:0(承诺未解决)
  • _83:1(承诺已解决且无错误)
  • _83:2(Promise已解决,但某处出现错误)

见下文。

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已解决但出现错误。

 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得到解决且没有错误。

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 :(得分:0)

我不会使用以_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) }) 并得到结果。请参阅下面的示例

ng new --style=styl PROJECT_NAME