[英]RxJs Wait for Promise to Resolve Before Continuing to Read Emitted Values
[英]Wait for Bluebird promise to resolve before continuing
我正在使用一個名為snoowrap的NPM軟件包,該軟件包可以訪問Reddit API。 它會返回Bluebird承諾的結果,例如來自搜索的結果。
我有這樣的文件reddit.js
:
const snoowrap = require('snoowrap');
function getFirstSearchResultUrl() {
// Actual Reddit API credentials not included.
const r = new snoowrap({
userAgent,
clientId,
clientSecret,
username,
password,
});
return r
.search({
query: 'query',
subreddit: 'askreddit',
})
.then((posts) => {
return posts[0].url;
});
}
const resultUrl = getFirstSearchResultUrl();
console.log(resultUrl);
但是console.log
打印[chainable Promise]
而不是返回的URL。
我如何獲得它來打印返回的URL,而不是諾言? 我通過文檔看去,嘗試了不同的藍鳥方法,如.reflect()
和.settle()
但他們似乎並沒有為我工作。
是否可以阻止腳本的其余部分在promise完成之前執行?
您的getFirstSearchResultUrl()
返回一個Promise。 這就是為什么您看到該日志語句的原因。 承諾尚未解決。
因此,您可以等待它通過async/await
解析,也可以記錄返回的結果,並使用getFirstSearchResultUrl()
向.then()
添加回調。
類似於getFirstSearchResultUrl().then(url=> console.log(url))
您也可以await
getFirstSearchResultUrl()
得到解決,獲取結果並記錄下來
就像是
(async function(){
var url = await getFirstSearchResultUrl();
console.log(url);
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.