小编Sup*_*Man的帖子

如何使用 fetch 处理响应 .json 和 .text?

我正在获取一个返回 json 的 API,但是当它出现错误时,它只返回一个文本(在带有 express 的节点中,返回结果为.json({}),错误为.send('string')),但是我无法修改 API

所以我试图制作一些读取 json 的东西,但如果它是一个文本,它将进入.catch错误所在的文本。

这是我尝试过但没有成功的方法。

fetch(apiUrl)
    .then(res => {
        try {
            let json = res.json()
            return json
        } catch (error) {
            return new Promise((resolve, reject) => reject(res.text()))
        }
    })
    .then(res => {
        // get result from res.json() **res == res.json**
    })
    .catch(error => {
        // get result from res.text() **res == res.text**
    })
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?如何获得res.json()在未来.then(),但如果失败,得到res.text().catch

编辑:

我想获得.text.catch …

javascript fetch es6-promise

13
推荐指数
2
解决办法
1万
查看次数

未解决的参考文献:GlideApp用Koltin编写的活动

简而言之,我的问题是我不能在用Kotlin编写的活动中使用GlideApp(生成的API).有趣的是Android Studio看到了引用,我可以打开生成的GlideApp,有代码完成,但是当我尝试构建它时,它失败了"Unresolved reference:GlideApp"

滑动模块在java中实现,因为大多数应用程序都是用java编写的.

任何的想法?

android kotlin android-glide

11
推荐指数
5
解决办法
4759
查看次数

Kotlin:coroutineScope 比 GlobalScope 慢

我正在学习协程,我遇到了以下令人惊讶的(对我而言)行为。我想要一张平行地图。我考虑了4个解决方案:

  1. 只是map,没有并行性
  2. pmap这里
  3. 修改第 2 项:我删除coroutineScope并使用GlobalScope.
  4. Java 的parallelStream.

编码:

import kotlinx.coroutines.*
import kotlin.streams.toList
import kotlin.system.measureNanoTime

inline fun printTime(msg: String, f: () -> Unit) =
    println("${msg.padEnd(15)} time: ${measureNanoTime(f) / 1e9}")

suspend fun <T, U> List<T>.pmap(f: (T) -> U) = coroutineScope {
    map { async { f(it) } }.map { it.await() }
}

suspend fun <T, U> List<T>.pmapGlob(f: (T) -> U) =
    map { GlobalScope.async { f(it) } }.map { it.await() …
Run Code Online (Sandbox Code Playgroud)

parallel-processing performance coroutine kotlin kotlin-coroutines

8
推荐指数
1
解决办法
2273
查看次数

为什么Internet Explorer无法在网站上显示图像?

我有一个由Joomla管理的网站.我想在我的一篇文章中显示图像,但该图像无法在Internet Explorer中查看,但其他浏览器可以显示它,尽管路径正常.我想念什么?

链接:http: //ascorbrasov.ro/images/stories/necula_ctin2.jpg

HTML:

<img src="/images/stories/constantin_necula2.jpg" border="0" 
     title="Constantin Necula - Conferinta" />
Run Code Online (Sandbox Code Playgroud)

谢谢

internet-explorer image

7
推荐指数
1
解决办法
2万
查看次数

未解决的参考:viewModelScope-Kotlin Android

我尝试将viewModelScope添加到基本的viewModel中,但是android studio无法识别它。

我尝试使用找到的一些解决方案来更改gradle构建文件,但没有任何效果。

这是我的build.gradle应用程序的摘录

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"
Run Code Online (Sandbox Code Playgroud)

当我在viewModel中键入viewModelScope时说Unresolved reference: viewModelScope

android kotlin android-gradle-plugin kotlin-android-extensions kotlin-coroutines

5
推荐指数
4
解决办法
1063
查看次数

在输入文本中仅在字母下划线

我试图使输入如下所示
输入ext

问题是我无法使这些下划线出现,我不确定是否有任何优雅的解决方案(或不太糟糕)来存档此文件。我已经考虑过设置绝对位置并使其合适,但是我不确定这是否是最佳解决方案。

我知道问题看起来没有那么详细,但是我没有更多信息可提供。

谢谢!

html javascript css

4
推荐指数
1
解决办法
101
查看次数

Kotlin泛型声明站点差异&lt;in T&gt;构造

我正在阅读Kotlin没有通配符的原因(https://kotlinlang.org/docs/reference/generics.htm l)。一切都到了申报地点的差异。我们有<in T><out T>结构应该替换通配符。我想我了解<out T>工作原理,但是遇到了麻烦<in T>
因此,在Java中,我们可以这样写:

public List<? extends Number> list1;
public List<? super String> list2;
Run Code Online (Sandbox Code Playgroud)

初始化后的第一种情况成为只读列表(尽管不是完全不变的,因为我们可以清除它),如果我们将每个元素都视为Number,则可以读取。
第二种情况是只写的(尽管如果我们将每个元素都视为对象,则可以读取)。我们可以在那里写String及其子类。
在Kotlin中,我可以使用以下方式重新创建list1示例<out T>

class Service {
  val container = Container(mutableListOf("1", "2", "3"))
}
class Container<T>(var list1: MutableList<out T>)
Run Code Online (Sandbox Code Playgroud)

最后,我尝试了一些类似的尝试,<in T>以为我可以重新创建list2示例,但是失败了: 在此处输入图片说明

有人可以向我解释如何在Kotlin中实现我的list2示例吗?我应该如何<in T>以正确的方式使用构造?

java generics kotlin

3
推荐指数
1
解决办法
312
查看次数

Kotlin 协程比线程花费的时间更长

我是 Kotlin 和协程的新手,我正在尝试了解协程 API,所以我很可能做错了什么。所以我有某种对象的列表,我试图对这些对象中的每一个应用一些长时间运行的处理。

val listOfFoos = listOf(Foo(1), ..., Foo(n))
listOfFoos.forEach { longRunningJob(it) }

fun longRunningJob(foo: Foo) {
    runBlocking{
        delay(2000) //hardcoded delay for testing
    }
    //do something else
}
Run Code Online (Sandbox Code Playgroud)

当然,这是并发运行它的完美候选者,所以这里使用的是好的旧线程:

listOfFoos.map { thread(start = true) { longRunningJob(it) } }.forEach { it.join() }
Run Code Online (Sandbox Code Playgroud)

当我测量它的执行时间时,它measureTimeMillis给了我大约 2 秒的时间,这看起来非常好,因为每个都longRunningJob并行运行。但是协程要好得多,因为它没有用于上下文切换的线程那样的开销。所以这是我使用协程的实现:

val deferredResults =
    listOfFoos.map { GlobalScope.async { longRunningJob(it) } }
runBlocking {
    deferredResults.awaitAll()
}
Run Code Online (Sandbox Code Playgroud)

但是这个实现在大约 4 秒内完成了执行,这根本不是我所期望的,如果我向列表中添加更多元素,执行时间也会增加。

那么我在这里做错了什么?

concurrency coroutine kotlin kotlin-coroutines

3
推荐指数
1
解决办法
969
查看次数

切换CSS类的纯Javascript替代方案?

我的目标是在每次点击时将div旋转180度,而不会切换CSS类。

第一次单击可以实现一个旋转(.style.transform =“ rotate(180deg)”;),但是任何后续单击都无效。

顺便说一句,那到底是为什么?div的ID并未更改,因此从理论上讲,相同的触发器(在这种情况下为单击)应该调用相同的函数,对吗?但事实并非如此。我不知道这里的逻辑是什么,技术上的解释是什么,并且在实践中,如何再次操作该后div(即在其JavaScript操作之后的原始div),而又无需切换CSS类。

function rotate() {
    document.getElementById("container").style.transform = 
    "rotate(180deg)";
}
Run Code Online (Sandbox Code Playgroud)
.container {
    width: 200px;
    height: 400px;
    border: 5px solid;
    border-bottom-color: blue;
    border-top-color: red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container" id="container" onclick="rotate()"></div>

    
Run Code Online (Sandbox Code Playgroud)

html javascript css

3
推荐指数
1
解决办法
134
查看次数

HTMLImageElement 作为 React Child 无效

我正在尝试异步加载图像,并且仅在加载图像后才将其显示在 React 应用程序中。

componentDidMount() {
    const img = new Image();
    img.onload = () => {
        this.setState({
            originalImage: img,
        });
    }
    img.src = './images/testImage.jpg'
}

render() {
    return (
       <main>
           {
              this.state.originalImage
           }
       </main>
    );
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

对象作为 React 子对象无效(找到:[object HTMLImageElement])

我想知道为什么会发生这个错误。当然,如果我只添加一个<img>标签,它就可以正常工作。

javascript image reactjs

3
推荐指数
1
解决办法
6249
查看次数