小编Ami*_*mit的帖子

如何在JSON中存储javascript函数

我有一个JS对象,我想保存在本地存储中供将来使用,我无法将其解析为字符串.

码:

JSON.stringify({
    a: 5,
    b: function (param) {
        return param;
    }
})
Run Code Online (Sandbox Code Playgroud)

结果:

"{"a":5}"
Run Code Online (Sandbox Code Playgroud)

如果不使用JSON,如何保存以备将来使用?

(并创建我自己的Lexer-Parser以中断字符串函数我不认为是一个选项)

javascript json

35
推荐指数
4
解决办法
4万
查看次数

手动注入服务

我有分量B,C,D从类继承A.

我想在课堂上使用一个服务A,但我不知道如何注入它,而不是从孩子那里注入它.

我尝试的是正常注入: constructor(pageName: string = null, translate: TranslateService) { 但是当我super()构建类时A,它会抛出错误,因为我没有提供第二个参数.

有没有办法使用Angular 2注入父类?

我被迫使用的Angular版本是:2.2.1

编辑:

一些示例案例:我有很多页面,每个页面都可以显示一个加载器.我不想每次都注入加载器,而是从每个页面管理加载器,我想:

export class BaseComponent {
    constructor(private loader: LoadingService) {}

    showLoading() {
        this.loader.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从组件本身继承:

@Component({
    selector: "page-login",
    providers: [UsersService],
    templateUrl: "login.html"
})
export class LoginPage extends BaseComponent {
    constructor(private usersService: UsersService) {
        super();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在LoginPage有一个showLoading来自它的父方法.

angular

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

WebCodecs > VideoEncoder:从编码帧创建视频

我想从上传到我的网站的多个图像创建一个视频文件。

到目前为止,我所做的就是拍摄这些图像,将它们一一绘制在画布上,然后使用 APIMediaRecorder来记录它们。不过,空闲时间还是很多的。

相反,我想使用VideoEncoderAPI。

我创建了一个编码器,将每个块保存为缓冲区:

const chunks = [];

let encoder = new VideoEncoder({
  output: (chunk) => {
    const buffer = new ArrayBuffer(chunk.byteLength)
    chunk.copyTo(buffer);
    chunks.push(buffer);
  },
  error: (e) => console.error(e.message)
});
Run Code Online (Sandbox Code Playgroud)

并使用我的设置对其进行配置:

encoder.configure({
  codec: 'vp8',
  width: 256,
  height: 256,
  bitrate: 2_000_000,
  framerate: 25
});
Run Code Online (Sandbox Code Playgroud)

然后,我将每个图像编码为帧:

const frame = new VideoFrame(await createImageBitmap(image));
encoder.encode(frame, {keyFrame: true});
frame.close();
Run Code Online (Sandbox Code Playgroud)

最后,我尝试用它创建一个视频:

await encoder.flush();

const blob = new Blob(chunks, {type: 'video/webm; codecs=vp8'});
const url = URL.createObjectURL(blob);
Run Code Online (Sandbox Code Playgroud)

但是,该 URL 块无法播放。如果我尝试下载它,VLC 不会显示它。如果我将其设置为元素的源video,我会得到: …

video html5-video webcodecs

17
推荐指数
2
解决办法
5300
查看次数

Ionic cordova媒体记录用户音频不起作用

我正在使用Ionic,并希望将音频录制到文件中,然后对文件执行某些操作.

运行于:Galaxy S4

首先,我创建文件:

await this.file.createFile(this.getFileDirectory(), this.getFileName(), true);
Run Code Online (Sandbox Code Playgroud)

准备好后,我创建一个新Media实例:

this.currentRecording = this.media.create(this.getFilePath());
Run Code Online (Sandbox Code Playgroud)

附加成功和错误侦听器:

this.currentRecording.onSuccess.subscribe((e) => {
  console.log(this.currentRecording.getDuration());
  this.file.readAsArrayBuffer(this.getFileDirectory(), this.getFileName())
          .then(file => console.warn(file))
});
this.currentRecording.onError.subscribe((err) => console.error(err));
Run Code Online (Sandbox Code Playgroud)

然后我开始录音: this.currentRecording.startRecord();

几秒钟后,我停止录制this.currentRecording.stopRecord(),并执行成功回调.

在控制台中,我现在看到了

-1 // console.log(this.currentRecording.getDuration());

ArrayBuffer {} // console.warn(file);

难道我做错了什么?它怎么解决成功,但没有文件,没有持续时间?

编辑

复制存储库:https://github.com/AmitMY/ionic-media-record-repro

README有完整的说明

ionic-framework ionic2 cordova-media-plugin

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

Python多处理池映射:AttributeError:无法腌制本地对象

我在类中有一个方法,该方法需要循环执行大量工作,我想将工作分散到我的所有核心上。

我编写了以下代码,如果我使用normal map,则可以使用,但是pool.map返回错误。

import multiprocessing
pool = multiprocessing.Pool(multiprocessing.cpu_count() - 1)

class OtherClass:
  def run(sentence, graph):
    return False

class SomeClass:
  def __init__(self):
    self.sentences = [["Some string"]]
    self.graphs = ["string"]

  def some_method(self):
      other = OtherClass()

      def single(params):
          sentences, graph = params
          return [other.run(sentence, graph) for sentence in sentences]

      return list(pool.map(single, zip(self.sentences, self.graphs)))


SomeClass().some_method()
Run Code Online (Sandbox Code Playgroud)

错误:

AttributeError:无法腌制本地对象“ SomeClass.some_method..single”

为什么不能泡菜single?我什至尝试移动single到全局模块范围(不在类内部-使其独立于上下文):

import multiprocessing
pool = multiprocessing.Pool(multiprocessing.cpu_count() - 1)

class OtherClass:
  def run(sentence, graph):
    return False


def single(params):
    other = …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-multiprocessing

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

使用Angular-CLI构建来复制文件/目录

有没有办法使angular-cli ng buil --prod命令也将文件/目录复制到dist文件夹?

我的项目包括一个"server"文件夹和一个root的"config.js"文件,我需要将它们复制到"dist",以便在构建时,我不需要记住复制这些目录

angular-cli

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

Firebase HTTP 云功能 - 500 服务器错误,请重试

我有一个每秒执行几次的 HTTP 函数(我没有确切的统计数据)。

有时,请求会像预期的那样返回数据,有时它会返回此错误文本:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>500 Server Error</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Server Error</h1>
<h2>The server encountered an error and could not complete your request.<p>Please try again in 30 seconds.</h2>
<h2></h2>
</body></html>
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,我的所有 HTTP 函数都会发生这种情况。5 分钟后提出相同的请求通常有效。

现在,我可以想象它是我的代码中的错误,但我使用中间件来捕获所有错误并以 JSON 响应!

这是我导出的云函数:

const app = express();
app.use(cors({origin: true, credentials: true})); // Allow cross-origin requests
app.get('/', this.reportRequest.bind(this));
app.use(errorMiddleware); // Handle errors

export const report = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)

这是errorMiddleware

export const errorMiddleware: ErrorRequestHandler = async (e, req, res, next) …
Run Code Online (Sandbox Code Playgroud)

express firebase google-cloud-functions

11
推荐指数
1
解决办法
2558
查看次数

Firebase - 自定义oAuth2服务 - 授权码?

有一个应用程序想要使用oAuth2与我的用户进行身份验证.

所以他们打开一个窗口,带有authorizeURL和参数(例如重定向uri)

喜欢:https://my-website.com/api/authLauncherauthorize?redirect = SOME_URI

现在我有自己的firebase-login,当用户登录时,我从firebase获取他们的访问令牌.这是我想要回应的内容.

但是,在oAuth2指南/解释中,如https://aaronparecki.com/oauth-2-simplified/我看到我应该返回一个授权码,我不明白我从哪里可以得到它?

我能做的是,生成一个废话代码,将它在数据库中与访问令牌配对,然后在"令牌"请求中发送正确的访问令牌.那是我应该做的吗?

为了清楚起见,这是我第一次自己编写oAuth2服务.

oauth-2.0 firebase firebase-authentication

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

Firebase 的云函数 - 完成状态:'超时' - 信息不是错误

如果云功能超时,我希望将其作为日志中的错误,以便跟踪功能的运行状况,并在必要时采取措施提高速度。

是否可以将该日志显示为错误?

另外,有没有办法捕捉这种超时?我有一个函数,如果抛出异常,则将某些内容保存到实时数据库中。是否也可以捕获此错误?

Firebase 响应:

感谢您与我们联系,并向我们提供反馈。我是来自 Firebase 支持的 Kyle,我很乐意处理这个关于 Cloud Functions with Firebase 的案例。

我知道云函数超时应该被视为“错误”而不是“信息”日志。我也同意在未来版本的 Cloud Functions 中包含另一个响应超时事件的触发器,如 functions.onTimeout() 会非常酷。

为此,请注意,我已经将您关于将函数超时视为错误日志而不是信息日志的反馈(和用例)进行了级联。我还提交了一份内部功能请求票,以征求您关于使用 functions.onTimeout() 触发器的建议。这将被处理以在团队内部进行讨论,但我无法提供任何 ETA 或具体时间表,以说明何时实施此请求的功能。同时,您可以关注我们的发行说明和 Firebase 博客,了解 Firebase 为我们尊贵的开发人员提供的即将推出的功能和错误修复。

firebase google-cloud-functions

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

剪贴板“写入”支持的 MIME 类型列表

我的应用程序使用 MediaRecorder api 生成类型为 的视频文件video/webm

我试图通过以下方式将此文件复制到剪贴板:

const item = new ClipboardItem({['video/webm']: blob});
await navigator.clipboard.write([item]);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

错误 DOMException:写入时不支持类型 video/webm。

支持哪些 MIME 类型clipboard.write?是否有支持的视频 MIME 类型?

在 Safari (Webkit) 上,支持四种: https://webkit.org/blog/10855/async-clipboard-api/

  • “文本/纯文本”
  • “文本/html”
  • “文本/uri-列表”
  • “图像/png”

javascript browser google-chrome

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