我的代码需要一些帮助.我是nodejs的新手,并且遇到很多麻烦.
我想做什么:
我想做什么:
> 1)使用亚马逊产品(ASIN)获取.txt
> 2)使用amazon-product-api包获取所有产品
> 3)将每个产品保存在.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]; return 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); }); };
解决方法
因为fs.writefile是一个传统的异步回调 – 你需要遵循promise规范并返回一个新的声明,用一个解析和拒绝处理程序包装它,如下所示:
return new Promise(function(resolve,reject) { fs.writeFile("<filename.type>",data,'<file-encoding>',function(err) { if (err) reject(err); else resolve(data); }); });
.then(function(results) { return new Promise(function(resolve,reject) { fs.writeFile(ASIN + '.json',function(err) { if (err) reject(err); else resolve(data); }); }); }).then(function(results) { console.log("results here: " + results) }).catch(function(err) { console.log("error here: " + err); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。