Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 节点承诺Bluebird Collections API和Spread()问题_Javascript_Promise_Bluebird - Fatal编程技术网

Javascript 节点承诺Bluebird Collections API和Spread()问题

Javascript 节点承诺Bluebird Collections API和Spread()问题,javascript,promise,bluebird,Javascript,Promise,Bluebird,我试图利用承诺链使用蓝鸟收集功能 脚本之一,例如: 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+

我试图利用承诺链使用蓝鸟收集功能

脚本之一,例如:

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.all()会发生什么情况?.all()是否停止,返回false,而不完成数组中的其余项

  • 函数/承诺对象是否并行运行
  • 是否可以让spread()只接受一个参数,并将其应用于返回的每个值?例子:
    .spread(函数(returnedValue){console.log(JSON.stringify(returnedValue));})
  • 您调用的
    .all()
    错误,它不接受任何参数(静态版本接受)。如果您要
    .spread
    ,则无论如何都不需要它

    承诺没有任何作用,只是告诉你什么时候发生了。您是调用某个函数来启动I/O的人-如果您随后同步调用下一行上的另一个函数,那么这两个函数将同时运行。如果在第一个函数完成后调用另一个函数,它们将按顺序运行。
    Promise.all
    只会在两者都完成时提供一个视图,与它们无关

    我不明白。和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);
        });
        */