首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS Lambda中使用async/await进行Woocommerce API调用

在AWS Lambda中使用async/await进行Woocommerce API调用
EN

Stack Overflow用户
提问于 2019-07-18 18:51:07
回答 2查看 447关注 0票数 1

我们在调用中对一些fs函数使用了一些async/await语法,并希望引入一个Woocommerce API调用并使用async/await,但我正在努力解决这个语法问题。

代码语言:javascript
复制
  const WooCommerceAPI = require('woocommerce-api');

  exports.handler = async (event, context, callback) =>{

      const orderFileName ="1141";
      let wooOrderDetails;

      var WooCommerce = new WooCommerceAPI({
        url: 'http: //example.com',
        consumerKey: 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        consumerSecret: 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        wpAPI: true,
        version: 'wc/v1'
    });

      WooCommerce.getAsync('orders/' + orderFileName).then(function(result){
        return JSON.parse(result.toJSON().body);
        wooOrderDetails = JSON.parse;
        console.log(wooOrderDetails);

        let wooOrderID = wooOrderDetails.id;
        let wooOrderNumber = wooOrderDetails.number;
        let Email = wooOrderDetails.billing.email;
    });

    // Update order as Completed
      const status ={
        status: 'completed'
    };

    // Update WooCommerce Order Notes via API
    WooCommerce.post('orders/' + orderFileName, status, function (err, states, res){
        if (err) throw err;
        console.log('Update WooCommerce order with status');
        const data ={ note: 'Status Updated';
      });

        WooCommerce.post('orders/' + orderFileName + '/notes', data, function (err, data, res){
            if (err) throw err;
            else console.log('Woo Order Notes Update:');
      });
    });
    });
  };

NPM module有一些异步示例,但我无法让它们正常工作。我主要认为函数的返回过程存在问题

EN

回答 2

Stack Overflow用户

发布于 2019-07-18 19:05:49

基本上,您将xyzAsync(a,b).then(result => {code})转换为result = await xyzAsync(a,b); code;。因此,您的第一个getAsync (其中包含一些小错误,顺便说一下)是:

代码语言:javascript
复制
const result = await WooCommerce.getAsync('orders/' + orderFileName)
const wooOrderDetails = JSON.parse(result.toJSON().body);
console.log(wooOrderDetails);
let wooOrderID = wooOrderDetails.id;
let wooOrderNumber = wooOrderDetails.number;
let Email = wooOrderDetails.billing.email;
票数 0
EN

Stack Overflow用户

发布于 2019-07-18 19:36:51

以下是可能的错误修复和异步等待样式的工作代码:

代码语言:javascript
复制
exports.handler = async(event, context, callback) => {

    const orderFileName = "1141";
    let wooOrderDetails;

    const WooCommerce = new WooCommerceAPI({
        url: 'http: //example.com',
        consumerKey: 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        consumerSecret: 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        wpAPI: true,
        version: 'wc/v1'
    });

    const result = await WooCommerce.getAsync('orders/' + orderFileName);
    wooOrderDetails = JSON.parse(result.toJSON().body);
    console.log(wooOrderDetails);
    let {id: wooOrderID, number:wooOrderNumber, billing} = wooOrderDetails;
    let {email} = billing;

    // Update order as Completed
    const status = {
        status: 'completed'
    };

    // Update WooCommerce Order Notes via API
    try {
        const statusResults = await WooCommerce.post('orders/' + orderFileName, status);
        console.log('Update WooCommerce order with status');
        const data = {note: 'Status Updated'};

        const notesResults = await WooCommerce.post('orders/' + orderFileName + '/notes', data);
        console.log('Woo Order Notes Update:');
    } catch (e) {
        // throw error or take actions you want
    }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57092820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档