最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Azure中的异步Easy Table脚本

运维笔记admin15浏览0评论

Azure中的异步Easy Table脚本

Azure中的异步Easy Table脚本

在Azure门户中,我正在修改Easy Table的脚本,我无法弄清楚如何在修改后的脚本中正确地将响应返回给客户端。这是使用节点包azure-mobile-apps

就像一个简单的例子,假设我有一个表,我正在修改'insert'函数,就像这样:

function getUserHeader(context) {
    return context.req.headers['user-id'];
}


table.insert(function (context) {
  context.item._user_id = getUserHeader(context);
  return context.execute();
});

现在这一切都很好,按预期完美地工作,桌面上的项目最终得到正确的_user_id和一切。

但是,让我们说,无论出于何种原因,我必须使getUserHeader异步并返回一个promise(也许我想在执行上下文之前验证一个令牌或检查相关表上的某些内容)。以下代码可能看起来像async:

function getUserHeader(context) {
    return new Promise(function(resolve, reject){
        resolve(context.req.headers['user-id']);
    });
}


table.insert(function (context) {
  getUserHeader(context)
    .then(function(uid) {
        context.item._user_id = uid;
        return context.execute();
    })      
});

现在它在一个层面上运行:context.execute确实运行,并且使用正确的_user_id创建记录。然而,客户端发出的http调用永远不会得到响应。通常,http响应返回的是cot添加到表中的项(在插入的情况下),但不在此处。

将异步函数添加到简易表脚本的工作流程中的正确方法是什么?

回答如下:

当你调用Promise函数时,你错过了return关键字。

如果您将其更改为:

table.insert(function (context) {
    return getUserHeader(context).then(function(uid) {
        context.item._user_id = uid;
        return context.execute();
    })      
});

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论