我有一个实现bluebird.js的API。 我有两种流程基本相同的方法,一种是有效的,另一种则没有。寻找可能出错的想法。
单词流程如下:
一些代码:
_Promise = require('bluebird');
this.getDataFromSomewhere = function getDataFromSomewhere(array, cb) {
_Promise.promisifyAll(this);
let promiseArray = [];
let keyPrefix = 'some prefix';
let output = [];
array.forEach(function(obj, i) {
promiseArray.push(that.foo(keyPrefix + i, function(err, data) {
output.push({ data });
}));
});
_Promise.join.apply(null, promiseArray);
cb(null, output);
});
现在,我有几种方法可以做到这一点 - 'getDataFromSomewhere_1'& 'getDataFromSomewhere_2'。 问题是1按预期工作,但2不同步工作。 在1中,直到_Promise.join.apply(...)完成后才调用cb。 在2中,之后立即调用cb。
我正在试图找出可能导致此行为的原因。 也许正在使用的内部库使其异步?
你会如何调试它? bluebird的api中还有其他工具可以帮助吗? (我查了一堆文档,找不到任何东西)。
请帮助:)