首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript承诺解析值

Javascript承诺解析值
EN

Stack Overflow用户
提问于 2015-11-22 04:19:26
回答 3查看 129关注 0票数 0

我试图从一个承诺中得到一个价值,但我做不到。为什么它不起作用?

我只得到Promise { <pending> }输出。

函数

代码语言:javascript
运行
复制
  function username() {
    return new Promise(function (resolve, reject) {
      user.where('id', req.id).fetch().then(function (data) {
        data = data.toJSON();
        resolve(data);
      });
    });
  }

变量

代码语言:javascript
运行
复制
var r = username().then(function (a) {
    return a.username;
  });

  console.log(r);

如果我删除return并放置console.log(a.username),它可以工作,但这不是我想要的结果。我想将返回的值放入r中。

编辑#1

我需要将返回的值传递到视图中(如下面所示),因此必须能够在当时()链之外访问它们。

代码语言:javascript
运行
复制
res.render("frontend/index", {
    value1 : value1,
    value2 : value2,
    value3 : value3
  });

编辑#2

我用的是Express.js

现在我得到了"Error: Can't set headers after they are sent."错误,希望现在更清楚。当用户试图访问页面时,我查询数据库并将变量传递给视图,但每个视图有多个操作(用户名、post信息、注释等)。

代码语言:javascript
运行
复制
exports.index = function (req, res) {

  function username() {
    return new Promise(function (resolve, reject) {
      user.where('id', req.id).fetch().then(function (data) {
        data = data.toJSON();
        resolve(data);
      });
    });
  }

  username().then(function (b) {
    res.render('backend/index', {
      username: b.username
    });
  });

  function post() {
    return new Promise(function (resolve, reject) {
      post.where('id', req.params.postId).fetch().then(function (data) {
        data = data.toJSON();
        resolve(data);
      });
    });
  }

  post().then(function (a) {
    res.render('backend/index', {
      post: a.post
    });
  });

};
EN

Stack Overflow用户

发布于 2015-11-22 04:33:17

尝试执行下一个进程,其中在fulfilled内部使用rr值来访问来自Promise r的异步返回值。

代码语言:javascript
运行
复制
var r = username().then(function (a) {
    return a.username;
});

r.then(function(data) {
  // `data` : `r` return value
  // do stuff with `data` here
});
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33851546

复制
相关文章

相似问题

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