前提・実現したいこと
javascript(node.js)のthenの結果を外部からの呼び出しで利用したい場合、どのように書けばいいのでしょうか。
somePromiseReturnMethodはサードパーティライブラリの関数で、作り変えることができないものになります。
色々検索しましたが、thenの処理結果を外部で活用しているようなコードがあまり出てこず、
そもそもの使い方や発想が間違っているなどありましたらご指摘ください。
この記事を読んでから出直せ、などでも構いません。
どうぞよろしくお願いいたします。
発生している問題・エラーメッセージ
thenのレスポンスを外部から活用したいがPromiseしか取れず、awaitしてもUnhandledPromiseRejectionWarningなどのエラーになって意図した通りにならない
該当のソースコード
module1.js
javascript
1module.exports.getSomething = (key) => { 2 let result = false; 3 somePromiseReturnMethod(key) 4 .then(response => { 5 // result = response.val; // ケース1 6 // console.log(response.val); // ケース11 意図した値になる 7 8 // return response.val; // ケース2 Promiseが返る 9 10 }); 11 // return result; // ケース1 Promiseが返る 12};
index.js
javascript
1const {getSomething} = require("module1"); 2// 必ずtrueになる.getSomethingのresultが欲しい 3 4if (!getSomething(key)) { 5 // do something... 6} 7 8// or 9// UnhandledPromiseRejectionWarning等が出てしまう 10await getSomething(key);
試したこと
awaitを使う
ケース1
letをスコープ外で定義しthen内部の結果を格納する
ケース2
then内部でreturnする(これはスコープが1つ抜けるだけなのでここで関数が終わるわけではないので意味がないと思いますが一応試したこととして・・・)
補足情報(FW/ツールのバージョンなど)
Node.js v10.16.0
VScode
回答2件
あなたの回答
tips
プレビュー