Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 承诺不是';t在node.js上解析_Javascript_Node.js_Asynchronous_Promise - Fatal编程技术网

Javascript 承诺不是';t在node.js上解析

Javascript 承诺不是';t在node.js上解析,javascript,node.js,asynchronous,promise,Javascript,Node.js,Asynchronous,Promise,目前我在node.js/Promises上遇到了很多问题。目前我正在做一些简单的事情,比如: module.js var fs = require('fs'); function myFunction() { var files = []; for (var i = 0; i < 100; ++i) { files.push(fs.writeFile("file-" + i + ".txt", "file" + i, "utf-8", function(

目前我在node.js/Promises上遇到了很多问题。目前我正在做一些简单的事情,比如:

module.js

var fs = require('fs');

function myFunction() {
    var files = []; 
    for (var i = 0; i < 100; ++i) {
        files.push(fs.writeFile("file-" + i + ".txt", "file" + i, "utf-8", function(err) {
            if (err)
                throw err;
        }));
    }
    Promise.all(files).then(function() {
        return new Promise(function(resolve, reject) {
            resolve('ok');
        })
    });
}
exports.myFunction = myFunction;
var test = require('./module.js');

test.myFunction().then(function(result) {
    console.log(result);
})
然而,如果我运行main.js,我的输出是:

module.myFunction().then(function(result) {
                   ^

TypeError: Cannot read property 'then' of undefined
我不知道为什么我的模块返回未定义的承诺。有人能帮我吗?我就是受不了这件事。多谢各位


而且,虽然
writeFile()
将文件写入file-0.txt等格式,但这些文件根本没有内容。

您编写的代码有两个问题:

  • 本机
    fs.writeFile()
    不返回承诺
  • 您的函数不返回承诺
对于第一个问题,您可以自己编写一些包装器,也可以使用类似的代码。对于第二个问题,您确实需要函数为所有文件返回承诺

那么您的代码可能如下所示:

var fsp = require('fs-promise');

function myFunction() {
  var files = []; 
  for (var i = 0; i < 100; ++i) {
    files.push( fsp.writeFile("file-" + i + ".txt", "file" + i, "utf-8" ) );
  }

  return Promise.all( files );

}
exports.myFunction = myFunction;
var fsp=require('fs-promise');
函数myFunction(){
var文件=[];
对于(变量i=0;i<100;++i){
files.push(fsp.writeFile(“file-“+i+”.txt”,“file”+i,“utf-8”);
}
返回承诺。所有(文件);
}
exports.myFunction=myFunction;

您的代码有两个问题:

  • 本机
    fs.writeFile()
    不返回承诺
  • 您的函数不返回承诺
对于第一个问题,您可以自己编写一些包装器,也可以使用类似的代码。对于第二个问题,您确实需要函数为所有文件返回承诺

那么您的代码可能如下所示:

var fsp = require('fs-promise');

function myFunction() {
  var files = []; 
  for (var i = 0; i < 100; ++i) {
    files.push( fsp.writeFile("file-" + i + ".txt", "file" + i, "utf-8" ) );
  }

  return Promise.all( files );

}
exports.myFunction = myFunction;
var fsp=require('fs-promise');
函数myFunction(){
var文件=[];
对于(变量i=0;i<100;++i){
files.push(fsp.writeFile(“file-“+i+”.txt”,“file”+i,“utf-8”);
}
返回承诺。所有(文件);
}
exports.myFunction=myFunction;

您的函数不返回任何内容。
fs.writeFile()
不会立即返回承诺。这不是承诺的问题,方法不返回anything@elclanrs@aarosil不
myFunction()
返回新承诺的方式返回新承诺(函数(解析,拒绝){resolve('ok');})
?@Since001没有,它没有。对
then()
函数的回调会执行,但不会执行
myFunction()
!您的函数不返回任何内容。
fs.writeFile()
不返回承诺。这不是承诺的问题,方法不返回anything@elclanrs@aarosil不
myFunction()
返回新承诺的方式返回新承诺(函数(解析,拒绝){resolve('ok');})
?@Since001没有,它没有。对
then()
函数的回调会执行,但不会执行
myFunction()