我的代码需要一些帮助。我是 Node.js 的新手,遇到了很多麻烦。
我正在尝试做的事情:
获取包含亚马逊产品 (ASIN) 的 .txt;
使用 amazon-product-api 包获取所有产品;
将每个产品保存在 .json 文件中。
我的代码不起作用。我想我搞砸了这个异步同步的东西 - 帮帮我!
var amazon = require('amazon-product-api');
var fs = require('fs');
var client = amazon.createClient({
awsId: "XXX",
awsSecret: "XXX",
awsTag: "888"
});
var array = fs.readFileSync('./test.txt').toString().split('\n');
for (var i = 1; i < array.length; i++) {
var ASIN = array[i];
client.itemLookup({
domain: 'webservices.amazon.de',
responseGroup: 'Large',
idType: 'ASIN',
itemId: ASIN
})
.then(function(results) {
fs.writeFile(ASIN + '.json', JSON.stringify(results), function(err) {
if (err) {
console.log(err);
} else {
console.log("JSON saved");
}
})
return results;
}).catch(function(err) {
console.log(err);
});
};
原文由 Markus Schmidlich 发布,翻译遵循 CC BY-SA 4.0 许可协议
截至2019年…
…正确的答案是将 async/await 与 本机
fs
包含在 node 中的承诺模块 一起 使用。升级到 Node.js 10 或 11(主要云提供商已支持)并执行以下操作:不要使用第三方包,也不要编写自己的包装器,这已经没有必要了。
不再是实验性的
在 Node
11.14.0
之前,您仍然会收到警告,指出此功能是实验性的,但它工作得很好,这是未来的发展方向。自11.14.0
以来,该功能不再是实验性的,可以投入生产。如果我更喜欢
import
而不是require
怎么办?它也有效——但仅适用于此功能未标记为实验性的 Node.js 版本。