gpt4 book ai didi

node.js - fs.write 中的回调不作为文档工作

转载 作者:搜寻专家 更新时间:2023-11-01 00:15:54 25 4
gpt4 key购买 nike

作为 node.js 文档

fs.write(fd, buffer, offset, length, position, [callback])

所以我这样写:

var fs = require('fs');

fs.open('./example.txt', 'a', 0666, function(err, fd) {
if (err) { throw err; }
console.log('file opened');
fs.write(fd, 'test', null, null, null, function(err) {
if (err) { throw err; }
console.log('file written');
fs.close(fd, function() {
console.log('file closed');
});
});
});

但是 fs.write 的回调没有被触发。输出只是“文件已打开”。

fs.write(fd, 'test', null, null, function(err) {

但我为第 5 个参数而不是第 6 个参数分配了回调。这是作品。为什么与文档不同。

在 Node 源(node_file.cc)中回调是第 6 个参数。

 Local<Value> cb = args[5];

我不明白。

最佳答案

有一个旧的 fs.write 接口(interface)仍然受支持。它允许写入字符串。因为你给出了一个字符串而不是一个 'Buffer' Node 试图让你的参数适合这个旧接口(interface):

fs.write(fd, data, position, encoding, callback)

请注意,旧接口(interface)将“回调”作为第 5 个参数。对于第五个参数,你给了它 'null' :

fs.write(fd, 'test', null, null, null, function(err) {

node 看到你的回调为“null”,因此认为你没有给 node 回调。

要么按照建议使用 Buffer 数据字符串,要么正确使用旧接口(interface)来使用纯字符串。如果您现在还没有准备好使用 Buffer,只需使用“new Buffer('test')”直到您准备好。

关于node.js - fs.write 中的回调不作为文档工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7696235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com