【发布时间】:2015-03-01 16:17:54
【问题描述】:
我正在调用函数中的 API。此时我得到“未定义”作为返回值。我知道对 API 的调用是成功的,因为我试图在调用中获取的 URL 打印到该术语没有问题。我有 99% 的把握在请求函数完成之前触发了对封装函数的调用(在列出 URL 之前返回“未定义”)。想确认这一点,并询问是否有教程或代码 sn-p 有人可以指出我并很好地描述了在这种情况下我应该遵循的模式。
function GetPhotoURLs(url){
var photo_urls= new Array();
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200)
{
//console.log(body) // Print the json response
var inhale_jsonp=body;
var blog_stream= inhale_jsonp.substring(22,inhale_jsonp.length-2); //getting JSON out of the wrapper
blog_stream=JSON.parse(blog_stream);
for(var i=0;i<blog_stream.posts.length;i++)
{
photo_urls[i]=blog_stream['posts'][i]['photo-url-500'];
console.log(photo_urls[i]+"\n"); //checking that I am getting all the URLs
}
console.log("success!");
console.log(photo_urls[1]);
return photo_urls;
}
else
{
photo_urls[0]='none';
console.log("nope!");
console.log(photo_urls[0]);
return photo_urls;
}
});
}
输出序列--> 1.未定义 2. 网址列表 3. 成功消息 + 来自 URLs 数组的第二个元素
【问题讨论】:
-
你需要使用回调。
标签: javascript node.js api asynchronous