我知道有人问过类似的问题,并且我试图理解它们并适用于我自己的问题,但是我还无法使任何事情起作用。
以下代码是Adonis.js控制器中的函数。
应该使用一个搜索词,并使用Google搜索API(serpApi)搜索该词,然后返回URL数组。
但是,目前我只能将其链接到console.log上的“链接”,但是只要调用函数“ googleSearch”,我都希望返回一个链接数组。
async googleSearch(searchTerm) {
let client = new GSR.GoogleSearchResults("[MyApiKey]")
var parameter = {
q: `${searchTerm}`,
hl: "en",
gl: "us",
google_domain: "google.com",
};
const callback = function(data) {
let links = [];
for (let i = 0; i < data.organic_results.length; i++) {
links.push(data.organic_results[i].link)
}
console.log(links)
}
client.json(parameter, callback)
}
我可以从回调函数中查看控制台日志时看到的数据,但是,我想在调用父函数时返回此数据,而不是将其记录到控制台。
我知道问题出在异步/同步区域中,我尽力弄清楚重组回调和更改事物顺序的事情,但我似乎无法使它正常工作。
下面是我要实现的示例,显然它不起作用,但也许有助于弄清事情。
async googleSearch(searchTerm) {
let results= []
let client = new GSR.GoogleSearchResults("[MyApiKey]")
var parameter = {
q: `${searchTerm}`,
hl: "en",
gl: "us",
google_domain: "google.com",
};
const callback = await function(data) {
let links = [];
for (let i = 0; i < data.organic_results.length; i++) {
links.push(data.organic_results[i].link)
}
results.push(links)
}
client.json(parameter, callback)
return results
}
变体1。