0

我有一个具有可观察对象的函数,我需要返回我在此函数中使用的 fetch 的值。但是我不知道为什么当我显示结果时我不能返回结果它完全没问题但是当我尝试返回它时它是空的。

我检查了一些类似的问题,但它们非常复杂,而且它们也不符合我的情况,而且在尝试了其中的一两个之后,问题仍然存在。

function getRandomQuote() {
    const obs$ = Observable.create(async(observer) => {
        const result = await fetch(RANDOM_QUOTE_API_URL)
            .then(Response => Response.json())
            .then(data => data.content)

        observer.next(result)
        console.log(result)
    })

    return obs$.subscribe(x => { return x })
}

我尝试仅在订阅部分内使用 return 但它不起作用,在类似的情况下,他们试图返回我尝试过但仍然不起作用的外部部分

我是 observable 和 JavaScrip 的新手,我只需要返回这个值并在另一个函数中使用它。谢谢你

4

1 回答 1

1

您应该返回Observable的不是Subscription

function getRandomQuote() {
    return Observable.create(async(observer) => {
        const result = await fetch(RANDOM_QUOTE_API_URL)
            .then(Response => Response.json())
            .then(data => data.content)
        observer.next(result)
    })
}
//usage 
    getRandomQuote().subscribe(console.log)

或者有defer()andfrom()运算符可以帮助您将 promise 转换为 observable

getRandomQuote=()=>defer(()=>from(fetch(RANDOM_QUOTE_API_URL)
            .then(Response => Response.json())
            .then(data => data.content))

//usage 
getRandomQuote().subscribe(console.log)
于 2020-02-25T08:17:16.037 回答