Promise stop
时间: 2023-12-27 11:25:15 浏览: 14
Promise 是一种异步编程的解决方案,它可以用来处理异步操作。Promise 可以通过 then()、catch() 和 finally() 方法来处理异步操作的结果、错误和完成状态。关于取消 Promise,有一些库提供了 CancelablePromise 类,可以让您轻松地取消 Promise。例如,Bluebird 是一个 Promise 实现库,提供了 CancelablePromise 类 。
相关问题
下面这串代码什么作用?let video = document.getElementById('video') let promise = navigator.mediaDevices.getUserMedia(constraints) promise.then((mediaStream) => { this.mediaStreamTrack = typeof mediaStream.stop === 'function' ? mediaStream : mediaStream.getTracks()[1] video.srcObject = mediaStream video.play() this.cameraOn = true
这段代码的作用是通过浏览器获取用户的摄像头视频流,并将视频流渲染到指定的 video 标签上。具体来说,代码中首先获取了一个 id 为 'video' 的 video 标签,然后调用了 navigator.mediaDevices.getUserMedia 方法获取用户的视频流,方法的参数 constraints 可以指定视频的分辨率、帧率等参数。接着通过 Promise 的方式处理获取视频流的结果,如果成功获取到视频流,就将其赋值给 video 标签的 srcObject 属性,并调用 play 方法播放视频。同时,将获取到的视频流存储在 this.mediaStreamTrack 变量中,并将 this.cameraOn 标记设为 true,表示摄像头已经打开。
请将以下代码修改成可以多次输入SQL获得多段数据,并不会报错Promise already completed:def spark_sql_test(m): conf = SparkConf().setAppName("test_spark_sql").setMaster("yarn").setSparkHome("/usr/local/share/spark") sc = SparkContext(conf=conf) hc = HiveContext(sc) result = hc.sql(m) spark = SparkSession.builder.appName("test_spark_sql").getOrCreate() df = spark.createDataFrame(result.rdd, result.schema) df_pd = df.toPandas() spark.stop() return df_pd
可以将函数修改为以下形式:
```
from pyspark.sql import SparkSession
def spark_sql_test(m):
spark = SparkSession.builder.appName("test_spark_sql").getOrCreate()
result = spark.sql(m)
df = spark.createDataFrame(result.rdd, result.schema)
df_pd = df.toPandas()
spark.stop()
return df_pd
```
这样修改后,可以多次调用 `spark_sql_test` 函数,每次传入不同的 SQL 语句进行查询,返回多段数据。同时,将 SparkConf 和 HiveContext 替换为 SparkSession 的方式,可以更加简洁地创建 SparkSession。