1

我正在使用 Twilio 的同步库设置同步应用程序。出于某种原因,REST API 方法似乎都不起作用。也就是说,我无法通过运行时函数获得任何对 console.log() 的同步方法。

但是,我可以使用 console.log() 纯文本。

这是我的代码:

exports.handler = function(context, event, callback) {

    // 0. Init
    // const phoneNumber   = event.phoneNumber;
    const issueLimit    = 3; // CHANGE IF NEEDED
    const listName      = 'issues';
    const twilioClient  = context.getTwilioClient();


    // 1. List all  lists 
    twilioClient.sync.services(context.SYNC_SERVICE_SID)
       .syncLists
       .list({limit: 20})
       .then(syncLists => syncLists.forEach(s => console.log(s.sid)));


    // 2. return true if quota reached

    console.log("Got to here");


    // 3. return false
    callback(null, undefined);
};

唯一似乎要执行的代码是 'console.log("Got to here");'。我也没有收到任何错误消息。

真诚感谢任何指导。

4

1 回答 1

1

当您看到.then()时,这是一个承诺,您可以在此处阅读有关此内容的更多信息https://www.twilio.com/blog/2016/10/guide-to-javascript-promises.html

换句话说,JavaScript 引擎会执行您的步骤2.,然后3.无需等待1.完成。而且由于您在第 3 步返回,callback(null, undefined);因此您不会看到日志。

所以,你必须在callback()里面移动.then(),像这样:

exports.handler = function (context, event, callback) {

    // 0. Init
    // const phoneNumber   = event.phoneNumber;
    const issueLimit = 3; // CHANGE IF NEEDED
    const listName = 'issues';
    const twilioClient = context.getTwilioClient();


    // 1. List all  lists 
    twilioClient.sync.services(context.SYNC_SERVICE_SID)
        .syncLists
        .list({ limit: 20 })
        .then(
            function (syncLists) {
                console.log("Got to here");
                syncLists.forEach(s => console.log(s.sid));
                callback(null, undefined);
            }
        );


};
于 2019-04-27T01:10:25.723 回答