promise - Promises 是否有计算表达式构建器?
问题描述
async function showSampleText(context: vscode.ExtensionContext): Promise<void> {
let sampleTextEncoded = await vscode.workspace.fs.readFile(vscode.Uri.file(context.asAbsolutePath('sample.txt')));
let sampleText = new TextDecoder('utf-8').decode(sampleTextEncoded);
let doc = await vscode.workspace.openTextDocument({ language: 'plaintext', content: sampleText });
vscode.window.showTextDocument(doc);
}
我将上面的打字稿片段翻译成下面的寓言代码。
type ITextDecoder =
abstract member decode: ?input: Uint8Array * ?options: {| stream : bool |} -> string
[<Emit("new TextDecoder($0)")>]
let TextDecoder label : ITextDecoder = jsNative
let show_sample_text (ctx : Vscode.ExtensionContext) =
async {
let! sampleTextEncoded = Vscode.workspace.fs.readFile(statics.Uri.file(ctx.asAbsolutePath("sample.txt"))) |> Async.AwaitPromise
let sampleText = TextDecoder("utf-8").decode(sampleTextEncoded);
let! doc = workspace.openTextDocument(options= !!{| language="plaintext"; content=sampleText |}) |> Async.AwaitPromise
let! _ = window.showTextDocument(document=doc,options=undefined) |> Async.AwaitPromise
return ()
} |> Async.StartAsPromise
它困扰着我如何在Async
和Promise
s 之间进行显式转换。是否有专门针对 Promises 的构建器?
解决方案
Fablepromise
通过 Fable.Promise 包支持。
如果您将 Fable.Promise 包添加到您的项目中,那么您可以执行以下操作:
let private getRandomUser () = promise {
// Do something here
// ...
return ()
}
推荐阅读
- wordpress - 从 WooCommerce 网站向 Flutter 应用程序推送通知
- c++ - 想要获得具有进程 ID 的窗口句柄?
- react-native - KeyboardAvoidingView 创建一个永久偏移量,我无法滚动到之后
- python - 分类数据
- ios - OpenCV:如何将图像垂直拼接成长图像而不是全景图/水平
- reactjs - REACTJS - 想一次播放 20 个视频,悬停时没有缓冲
- c++ - qt中设置setWidgetResizable为true后,滚动区自定义小部件无法上下滚动
- rpc - 孟买的随机错误:MetaMask - RPC 错误:非 200 状态代码:“404”
- node.js - 如何解决这种情况 Error ERESOLVE could not resolve
- reactjs - 如何从子组件(无状态)发送道具并由父组件(无状态)接收并再次传递给祖父(类组件)以触发redux