- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我使用以下代码在 UWP WinRT 上使用 JSON 流:
async function connect() {
let stream: MSStream;
return new CancellableContext<void>(
async (context) => {
// this will be called immediately
stream = await context.queue(() => getStreamByXHR()); // returns ms-stream object
await consumeStream(stream);
},
{
revert: () => {
// this will be called when user cancels the task
stream.msClose();
}
}
).feed();
}
async function consumeStream(stream: MSStream) {
return new CancellableContext<void>(async (context) => {
const input = stream.msDetachStream() as Windows.Storage.Streams.IInputStream;
const reader = new Windows.Storage.Streams.DataReader(input);
reader.inputStreamOptions = Windows.Storage.Streams.InputStreamOptions.partial;
while (!context.canceled) {
const content = await consumeString(1000);
// ... some more codes
}
async function consumeString(count: number) {
await reader.loadAsync(count); // will throw when the stream gets closed
return reader.readString(reader.unconsumedBufferLength);
}
}).feed();
}
这里是关于InputStreamOptions.partial
的文档说:
The asynchronous read operation completes when one or more bytes is available.
但是,即使 reader.unconsumedBufferLength
为 0,reader.loadAsync
也会完成,这会增加 CPU 负载。这是 API 错误还是我可以阻止此行为,以便 loadAsync
仅在 unconsumedBufferLength
大于 0 时才能完成?
PS:这是一个纯JS的复现:https://github.com/SaschaNaz/InputStreamOptionsBugRepro
最佳答案
Is this an API bug or can I prevent this behavior so that loadAsync can complete only when unconsumedBufferLength is greater than 0
最有可能它也在流的末尾 完成。因此,在那种情况下,unconsumedBufferLength
将为零并且需要满足。
事实上 https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.streams.datareader.aspx 的例子显示类似的东西(不可否认没有使用那个选项):
// Once we have written the contents successfully we load the stream.
await dataReader.LoadAsync((uint)stream.Size);
var receivedStrings = "";
// Keep reading until we consume the complete stream.
while (dataReader.UnconsumedBufferLength > 0)
🌹
关于javascript - 即使 unconsumedBufferLength 为 0,DataReader.loadAsync 也正在完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527614/
我正在通过创建一些项目来学习 React Native。 我卡住了,无法加载自定义字体。我关注了this来自世博会文档的指南。但是我收到一个错误 fontFamily "raleway-bold" i
// Asynchronously load and execute a script from a specified URL function loadasync(url) { var head
假设我正在使用线程,它在 Windows::Storage::Streams::DataReader (m_reader) 的帮助下从网络套接字 (Windows::Networking::Socke
我正在尝试通过 WebAPI 调用从 RavenDb 加载文档。当我打开一个异步 IDocumentSession 并调用 LoadAsync 时,我没有得到任何异常或结果,线程立即退出,没有错误代码
当我遇到问题时,我正在我的项目中添加一些异步调用。 Session 和 AsyncSession 之间的相同调用没有返回我的文档。 这里是文档: class Company { string
我有一个程序,用户可以在其中查看保存在 XAML 中的各种 3D 模型,然后使用 TrackballDecorator 操作 Viewport3D。这些 XAML 文件中包含转换,我使用问题 WPF
我正在尝试通过 StreamSocket 发送 HTTP 请求,但响应被 chop 为 “failedWinRTError:对象已关闭。” 这是我的代码: var count, hostName,
我的 Windows Phone 8 应用程序中有以下代码。 //connection code, done during app start socket = new StreamSocket();
我想将数据库中的图像异步加载到图片框中。我该怎么做?现在我有: byte[] byteBLOBData = new byte[0]; byteBLOBData = (byte[])ds.Tables[
我正在将 React Native 与 Expo 结合使用,除了自定义字体的问题之外,一切都很顺利。我的字体 Lobster-Regular.ttf 在 ./assets/fonts 中,并且我一直在
我正在创建一个 Win 8 商店应用程序,我在其中使用 StreamSocket 连接到一个用 Java 编写的服务器。当我在调试中运行应用程序时,在 StreamSocket.ConnectAsyn
我在使用 Windows 8 UI 应用程序时遇到问题。我正在使用客户端-服务器通信,客户端需要一直检查新消息。所以我使用这样的代码,其中 _socket 是一个 StreamSoket: p
import React, { Component } from 'react'; import { View, TextInput, } from 'react-native'; imp
我的应用程序使用 CRNA 和 Expo,我的问题是 Font.loadAsync() 异步函数无法在我的项目目录的 asset/fonts/文件夹中找到 .otf 字体文件。我绝对确定目录和文件名是
我正在使用 C# 在 WinRT 上编写一个客户端应用程序,它通过 TCP 连接到多个服务器。对于 TCP 连接,我使用 StreamSocket。然后将输入和输出字符串包装在 DataWriter
我使用以下代码在 UWP WinRT 上使用 JSON 流: async function connect() { let stream: MSStream; return new C
有没有办法将 PictureBox 绑定(bind)到字符串,以便当字符串发生变化时,它会使用字符串中的 url 调用 LoadAsync() 并加载图像? 目前这是我在自动生成的代码中所拥有的。 t
我有一个 React Native,React 混合应用程序。对于 React Native,我使用的是 react-native-elements。 我的应用程序使用 Expo 运行,并使用 rea
这是react expo项目,使用react-native-form-validation进行验证时出现错误。 0 && errors.fullName} status={errors.fu
这是react expo项目,使用react-native-form-validation进行验证时出现错误。 0 && errors.fullName} status={errors.fu
我是一名优秀的程序员,十分优秀!