Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只为组织使用蓝鸟_Javascript_Node.js_Promise_Bluebird - Fatal编程技术网

Javascript 只为组织使用蓝鸟

Javascript 只为组织使用蓝鸟,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,我很难组织我的代码,所以我决定在初始化过程中实现bluebird,但唯一的目的是组织,所以我不知道如何在我的一个过程中调用resolve 我有: Configuration(app).then(Apps).then(Routes) Configuration -> Turn my configuration object global. Apps -> configure the uses, sets and uses of express Routes

我很难组织我的代码,所以我决定在初始化过程中实现bluebird,但唯一的目的是组织,所以我不知道如何在我的一个过程中调用resolve

我有:

Configuration(app).then(Apps).then(Routes)

Configuration -> Turn my configuration object global.
Apps          -> configure the uses, sets and uses of express
Routes        -> create the routes
问题是。如何在此文件中应用新承诺的逻辑:

var Apps;

Apps = function(app) {
  app.engine('.html', ejs.renderFile);
  app.set('views', path.join(__dirname, '../../client/views'));
  app.set('view engine', 'ejs');
  app.use(body.json());
  app.use(body.urlencoded({
    extended: false
  }));
  app.use(cookie());
  app.use(express["static"](path.join(__dirname, '../../client/public')));
  app.use(express["static"](path.join(__dirname, '../../client/app')));
  app.use(function(request, response, next) {
    response.header('Access-Control-Allow-Origin', GLOBAL.config.cors.origin);
    response.header('Access-Control-Allow-Methods', GLOBAL.config.cors.methods);
    response.header('Access-Control-Allow-Headers', GLOBAL.config.cors.headers);
    next();
  });
  app.use(session({
    secret: '04Eq27Sgg0BDlgfRmarMar1234689007-James-Bond'
  }));
};
我没有这样的逻辑:执行此操作,如果确定,则调用
resolve
,如果没有,则调用
reject
。所以,这样做是愚蠢的:

var Apps;

Apps = function(app) {
  return new Promise(resolve, reject) {
    app.engine('.html', ejs.renderFile);
    app.set('views', path.join(__dirname, '../../client/views'));
    app.set('view engine', 'ejs');
    app.use(body.json());
    app.use(body.urlencoded({
      extended: false
    }));
    app.use(cookie());
    app.use(express["static"](path.join(__dirname, '../../client/public')));
    app.use(express["static"](path.join(__dirname, '../../client/app')));
    app.use(function(request, response, next) {
      response.header('Access-Control-Allow-Origin', GLOBAL.config.cors.origin);
      response.header('Access-Control-Allow-Methods', GLOBAL.config.cors.methods);
      response.header('Access-Control-Allow-Headers', GLOBAL.config.cors.headers);
      next();
    });
    app.use(session({
      secret: '04Eq27Sgg0BDlgfRmarMar1234689007-James-Bond'
    }));  

    resolve()
  }
};

我的问题是。在这种情况下,我能做什么?

不需要
然后
回调来返回承诺。它可以
返回应用程序
我真的不明白你用蓝鸟做什么。您的安装过程似乎没有涉及任何异步的内容?所以只需选择
路由(应用程序(配置(应用程序))承诺用于组织和管理异步操作的控制流和错误处理,当您有多个必须以某种方式协调的异步操作时,它们特别有价值。差不多就是这样。尝试对非异步代码使用承诺可能会使事情变得比需要的更复杂。承诺用于异步操作。你知道那是什么吗?这听起来也像是你应该回去读更多关于承诺是什么以及它们对什么有用的内容,因为你试图在承诺没有价值的地方使用它们。这有点像你在说“好吧,我有这个锤子,我可以用它打开我的汽水罐吗?”我想你可以,但这是一个错误的工作工具。承诺不能为组织非异步操作提供价值。它们只会使同步代码更复杂,而不是更简单。它们不是通用的代码组织工具。如果你真的理解了承诺的作用,我想你已经明白了。这就是为什么我建议你可能需要更好地理解它们。我的建议是停止尝试用承诺组织同步代码。不需要
然后
回调来返回承诺。它可以
返回应用程序
我真的不明白你用蓝鸟做什么。您的安装过程似乎没有涉及任何异步的内容?所以只需选择
路由(应用程序(配置(应用程序))承诺用于组织和管理异步操作的控制流和错误处理,当您有多个必须以某种方式协调的异步操作时,它们特别有价值。差不多就是这样。尝试对非异步代码使用承诺可能会使事情变得比需要的更复杂。承诺用于异步操作。你知道那是什么吗?这听起来也像是你应该回去读更多关于承诺是什么以及它们对什么有用的内容,因为你试图在承诺没有价值的地方使用它们。这有点像你在说“好吧,我有这个锤子,我可以用它打开我的汽水罐吗?”我想你可以,但这是一个错误的工作工具。承诺不能为组织非异步操作提供价值。它们只会使同步代码更复杂,而不是更简单。它们不是通用的代码组织工具。如果你真的理解了承诺的作用,我想你已经明白了。这就是为什么我建议你可能需要更好地理解它们。我的建议是停止尝试用承诺组织同步代码。