【发布时间】:2019-12-31 00:40:43
【问题描述】:
我正在尝试使用 Promises 和 Async await 清理我的代码。我的问题是我需要这些请求可以在之后通过相同的处理被召回。
我已经尝试过 Promises,但是如果我将所有内容都嵌套在函数中,它会很快变得一团糟。如何制作此代码,以便它仅在返回值时在 go() 异步函数中继续?
const request = require('request-promise');
require('console-stamp')(console, 'HH:MM:ss.l');
const colors = require('colors');
const kws = 'sweatsasaaser'.toLowerCase();
const size = 'Small';
go();
async function go(){
const f = await getproduct()
console.log('Finished ' + f)
if (f == undefined) getproduct()
}
async function getproduct(){
console.log('Requesting')
let result = await request('https://www.supremenewyork.com/mobile_stock.json');
let data = JSON.parse(result);
let prodid;
for (var i = 0; i < data.products_and_categories['Tops/Sweaters'].length; i++){
if (data.products_and_categories['Tops/Sweaters'][i].name.toLowerCase().includes(kws)){
console.info('Found product: '.green + data.products_and_categories['Tops/Sweaters'][i].name.green);
return prodid = data.products_and_categories['Tops/Sweaters'][i].id;
};
};
if (prodid == undefined){
console.log(`Product id: ${prodid}`.blue);
return prodid;
}
else {
setTimeout(function(){
//getproduct()
}, 4000);
}
}
【问题讨论】:
标签: node.js asynchronous request request-promise