蓝鸟承诺解决或拒绝不能正常工作

时间:2016-04-23 04:28:11

标签: javascript node.js promise

这是一个仅在该目录不存在时才创建目录的函数。这里我使用fs.mkdirSync函数来创建目录。通常,如果目录创建成功,则此函数返回值undefined,如果创建失败,则返回错误消息。 我已使用if条件处理了promise promise和reject方法。在我的home目录中,没有名为Projectstest的目录。当我使用dirName/home/srinesh/Projects/test/hello运行该功能时,在这种情况下createDir会生成错误。但是我正在努力解决的问题是,错误消息不包含createDir error字符串,告诉它没有通过promise的{​​{1}}函数。最后,我想知道的是如何使用reject处理Sync函数的错误。

错误讯息:

promises

守则:

Unhandled rejection Error: ENOENT: no such file or directory, mkdir '/home/dazz/Projects/test/hello'

1 个答案:

答案 0 :(得分:0)

fs.mkdirSync总是返回undefined,如果出现错误,它会抛出。每当代码抛出时,您可以将fs.mkdirSync包裹在try-catchreject中,但更优雅的解决方案是使用函数fs.mkdir的异步版本,如下所示。

var fs = require('fs');

var filePath =  __dirname + '/dummyFolder';
var createDir = function (dirName) {
  return new Promise(function (resolve, reject) {
    var result = fs.mkdir(dirName, (err, folder) => {
        if (err) {
            reject(err);
        } else {
            resolve("folder created successfully");
        }
    });
  })
};

var createProject = function (filePath) {
    createDir(filePath)
        .then(function(val) {
            console.log(val);
        })
        .catch(function(error) {
            console.log(error);
        });
};


createProject(filePath);