私は現在Bluebirdで遊んでいます。私の目的は、このモジュールを使用して非同期に関数を実行することです。私が自分のコードに入れなかったことがあるかどうか疑問に思っていました。私のスクリプトは期待どおりに動作しません。以下のコードを確認してください。ありがとう!Node.js | Bluebird Promiseは非同期にタスクを実行しません
'use strict';
const Promise = require('bluebird');
// Generate alphabets
function range(start, stop) {
const result = [];
for (let idx = start.charCodeAt(0), end = stop.charCodeAt(0); idx <= end; idx++) {
result.push(String.fromCharCode(idx));
};
return result.join('');
};
// List alphabets
function listAz() {
const az = range('A', 'Z');
Array.from(az).forEach(function(char) {
console.log(char);
});
};
// List numbers
function listNum() {
for (let num = 1; num <= 10; num++) {
console.log(num);
};
};
function main() {
const listNumPromise = Promise.promisify(listNum);
const listAzPromise = Promise.promisify(listAz);
console.log('Hey!');
console.log('Calling listNum now...');
listNumPromise()
.then(function(data) {
console.log(data);
})
.catch(function(err) {
console.log(err);
});
console.log('Calling listAz now...');
listAzPromise()
.then(function(data) {
console.log(data);
})
.catch(function(err) {
console.log(err);
});
console.log('Done!');
};
if (require.main == module) {
main();
};
は、ここで私は上記のコードを使用して私のスクリプトを実行したときの結果です:
Hey!
Calling listNum now...
1
2
3
4
5
6
7
8
9
10
Calling listAz now...
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Done!
私の予想は以下のとおりです。
Hey!
Calling listNum now...
Calling listAz now...
Done
1-10
A-Z
実行する関数が必要な場合は、promise.all()を試してみてください。 – user93
*「スクリプトが期待どおりに動作しません」*:期待どおりの出力を追加できますか? (あなたが私達に言わなければ、あなたが期待したことは分かりません)。 – trincot
両方の機能が同期しています。ブルーバードは奇跡的にそれらを非同期にすることはできません。 – robertklep