首页 文章

Node Promises Bluebird Collections API和Spread()问题

提问于
浏览
2

我正在尝试使用Bluebirds Collection功能的promise链 .

其中一个脚本例如:

var rest = require("./promisified_restler.js");
function memory(token) {
    CHECK='cfDJO9im';
    URL='https://monitoring.api.foo.com/v1.0/833/';
    SLUG='entities/en5mKIvs/checks/';
    MODE='/test';

    url = CHECK+URL+SLUG+CHECK+MODE
    headers = { headers:
        { "X-Auth-Token": token }
    }
    return rest.post(url, headers);
}


module.exports = memory;

主要脚本:

var getToken = require('./get_token.js');
var memory = require('./memory.js');
var cpu = require('./cpu.js');
var http = require('./http.js');
var httpPort = require('./http_port.js');
var network = require('./network.js');

getToken()
.catch(function(e) {
    console.log(e);
})
.all([cpu(token), memory(token)]).spread(function(cpu_result,
            memory_result) {
                console.log(JSON.stringify(cpu_result));
                console.log(JSON.stringify(memory_result));
            });
  • 如何将令牌值传递给每个返回promise对象的函数?

  • 如果其中一个promise对象被拒绝,Promise.all()会发生什么? .all()是否停止,返回false,而不是完成数组中的其余项目?

  • 函数/承诺对象是否并行运行?

  • 是否可以让spread()只接受一个参数并将其应用于返回的每个值?示例: .spread(function(returnedValue) {console.log(JSON.stringify(returnedValue)); });

1 回答

  • 2

    你正在调用 .all() 错误,如果你要 .spread ,它就不需要't take any arguments (the static version does). It' .

    承诺不运行任何东西,他们只是告诉你什么时候运行 . 您是调用某些函数来启动I / O的人 - 如果您然后同步调用下一行的另一个函数,则两者同时运行 . 如果您在第一个函数完成后调用另一个函数,它们将按顺序运行 . Promise.all 只会在两者完成时给你一个视图,它与它们没有任何关系 .

    我不明白1.和4 ..这里的代码:

    getToken()
        .then(function(token) {
            return [cpu(token), memory(token)];
        })
        .spread(function(cpu_result, memory_result) {
            console.log(JSON.stringify(cpu_result));
            console.log(JSON.stringify(memory_result));
        })
        /*
        This is totally unnecessary because unhandled errors are logged anyway.
        Uncomment if you want to actually handle the error
        .catch(function(e) {
           console.log(e);
        });
        */
    

相关问题