在完成回调函数后从父控制器方法返回数据

问题描述 投票:0回答:1

我知道有人问过类似的问题,并且我试图理解它们并适用于我自己的问题,但是我还无法使任何事情起作用。

以下代码是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 
        }
javascript node.js asynchronous callback adonis.js
1个回答
0
投票

变体1。

© www.soinside.com 2019 - 2024. All rights reserved.