在nodeJs中保证,我如何获得返回值?

赫尔巴维

我从推入数组的遥远表中获取值:

function getrecords(base, view) {
    var tab = []; 
    var jsonTab = {};
    base('Table 1').select({
        view: view
    }).eachPage(function page(records, fetchNextPage) {
        records.forEach(function(record) {
            tab.push({
                'Name':record.get('Name'),
                'Notes': record.get('Notes')
            });
        });
        //console.log(tab); 
        return tab;
    });
}

现在,使用promiseJs我做了一个promise函数,因为调用是异步的:

function readRecords(base, view){
    return new Promise(function(fulfill, reject){
        getrecords(base, view, function (err, res){
            if(err) reject(err);
            else fulfill(res);
        });
        });
}

现在,我要做的就是使用该标签!但是,当我创建一个这样的var并对其进行控制台记录时:

var tabRecord= readRecords(base, view); 
console.log(tabRecord); 

这就是cmd中的结果:

承诺{_45:0,_81:0,_65:空,_54:空}

它是什么意思?为什么我没有显示该标签?为了获得函数的返回值,我应该怎么做?

谢谢大家

ps:我通过网站https://www.promisejs.org/帮助mysefl编写了承诺。

赫尔巴维

Getrecords应该返回一个承诺,所以我这样做了:

function getrecords(base, view) {
    return new Promise(function(resolve, reject){
        var tab = []; 
        base('Table 1').select({
            view: view
        }).eachPage(function page(records, fetchNextPage) {
            records.forEach(function(record) {
            //resolve(records);
                tab.push({
                    'Name':record.get('Name'),
                    'Notes': record.get('Notes')
                });
            });
            fetchNextPage();
            resolve(tab);
            reject("Nononono");
        });
    });
}

之后,我可以then像下面这样调用后跟“ 的方法

getrecords(base, view).then(function(res){return res;}).then(function(res{tabToCSV(res)})

有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章