Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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_Asynchronous_Promise - Fatal编程技术网

Javascript 将其中一个异步方法重写为使用承诺的方法

Javascript 将其中一个异步方法重写为使用承诺的方法,javascript,node.js,asynchronous,promise,Javascript,Node.js,Asynchronous,Promise,如何使用模块将回调重写为承诺?例如,如果我有以下代码 async.parallel([ function(){ ... }, function(){ ... } ], callback); 或 您可以使用Promise。几乎每个Promise库都以这样或那样的方式内置了所有的,尤其是原生和蓝鸟promises: function fn1(){ return Promise.resolve(1); } function fn1(){ return

如何使用模块将回调重写为承诺?例如,如果我有以下代码

async.parallel([
    function(){ ... },
    function(){ ... }
], callback);


您可以使用
Promise。几乎每个Promise库都以这样或那样的方式内置了所有的
,尤其是原生和蓝鸟promises:

function fn1(){
    return Promise.resolve(1);        
}
function fn1(){
    return Promise.resolve(2);        
}

Promise.all([fn1(), fn2()]).then(function(results){
    //access results in array
    console.log(results); // [1,2]
});
重写
async.parallel

您不会为此使用任何回调函数,但会为所有要运行的任务创建自己的承诺。然后,您可以使用以下命令等待所有用户:

重写
异步瀑布

为此,您将使用最原始的promise方法:。它用于链接承诺、将回调传递给承诺以及获取回调结果的新承诺。但是请注意,承诺总是只使用单个值进行解析,因此您的
节点回退(null,'one','two')
示例将无法工作。您将不得不使用数组或对象

Promise.resolve(['one', 'two']).then(function(args) {
    // args[0] now equals 'one' and args[1] now equals 'two'
    return Promise.resolve('three'); // you can (and usually do) return promises from callbacks
}).then(function(arg1) {
    // arg1 now equals 'three'
    return 'done'; // but plain values also work
}).then(function(result) {
    // result now equals 'done'    
});

async.parallel([function(){…},function(){…}],回调)的结果是什么,是否可以创建堆栈代码段?使用异步模块的预期结果是什么?这是两种
async
方法!
Promise.all([promiseMaker1(), promiseMaker2()]).then(callback);
Promise.resolve(['one', 'two']).then(function(args) {
    // args[0] now equals 'one' and args[1] now equals 'two'
    return Promise.resolve('three'); // you can (and usually do) return promises from callbacks
}).then(function(arg1) {
    // arg1 now equals 'three'
    return 'done'; // but plain values also work
}).then(function(result) {
    // result now equals 'done'    
});