Javascript 如何在node.js中使此请求同步
这是我的异步代码片段,通过提供网站URL,它可以正常工作。这是一个异步请求,我想让它成为一个同步请求 有人能帮我吗 我正在使用炼金术api获取提要 我正在从云端获取数据Javascript 如何在node.js中使此请求同步,javascript,node.js,Javascript,Node.js,这是我的异步代码片段,通过提供网站URL,它可以正常工作。这是一个异步请求,我想让它成为一个同步请求 有人能帮我吗 我正在使用炼金术api获取提要 我正在从云端获取数据 var url=[网站名称] 对于(var j=0;jvar url=[网站名称] var请求=要求(“请求”); 功能promiseRequest(提要){ 返回新承诺(功能(解决、拒绝){ 请求('http://cloud.example.com/v3/mixes/contents?streamId=feed/“+feed/
var url=[网站名称]
对于(var j=0;jvar url=[网站名称]
var请求=要求(“请求”);
功能promiseRequest(提要){
返回新承诺(功能(解决、拒绝){
请求('http://cloud.example.com/v3/mixes/contents?streamId=feed/“+feed/,
功能(错误、响应、正文)
{
如果(!error&&response.statusCode==200)
{
决议(机构);
}
其他的
{
拒绝(响应状态码)
}
});
}
}
函数getFeedsFromUrls(URL){
返回新承诺(功能(解决、拒绝){
var count=0,totalCount=url.length;
var结果=[];
对于(var j=0;j=totalCount){
决心(结果);
}
});
});
}
});
}
getFeedsFromUrls(URL)。然后(函数(结果){
控制台日志(结果);
})
同步请求将使nodejs服务器阻塞。我认为不会出现任何适合同步请求的情况。不,先生,为什么它会阻塞nodejs服务器,我正在使用alchemy Api通过promise js获取数据。我们不能使这个同步@gumingfengPromise构建以避免同步。在nodejs中,javascript env在单个线程中运行。如果存在长时间的同步javascript函数,则无法运行其他javascript。这就是块。承诺只是使异步脚本看起来更像同步脚本。我应该从循环还是从外部调用此函数?什么是“xxx”顺便说一句谢谢你的回答(y)
var urls = [website ur names]
var request = require('request');
function promiseRequest(feeds){
return new Promise(function(resolve,reject){
request('http://cloud.example.com/v3/mixes/contents?streamId=feed/'+feeds/,
function (error, response, body)
{
if (!error && response.statusCode == 200)
{
resolve(body);
}
else
{
reject(response.statusCode);
}
});
}
}
function getFeedsFromUrls(urls){
return new Promise(function(resolve,reject){
var count=0,totalCount = urls.length;
var result=[];
for(var j=0;j<urls.length;j++){
alchemyapi.feeds("url",urls[j], {}, function(response) {
for(var i=0;i<response["feeds"].length;i++)
var feed = response["feeds"][i].feed;
promiseRequest(feed).then(function(data){
count++;
result.push(data);
if(count>=totalCount){
resolve(result);
}
}).catch(function(err){
count++;
if(count>=totalCount){
resolve(result);
}
});
});
}
});
}
getFeedsFromUrls(urls).then(function(result){
console.log(result);
})