javascript - 传递给“.run”方法的批处理函数没有返回承诺
问题描述
尽管我确实意识到错误的含义以及它发生的原因,但我认为我有一个超出预期的用例。我Word.run()
在另一个承诺中使用,如下所示:
return new Promise((resolve, reject) => {
window.Word.run(context => {
// do stuff with context
resolve(someData);
});
});
所以,如果我理解正确,这解决了我的承诺,但是.run
因为最后没有return context.sync()
,所以该方法挂起?还是我弄错了?如果我是对的,我该如何重写上面的示例以保持.run
正常工作?
解决方案
如果您希望在上下文同步后解决您的承诺...
return new Promise((resolve, reject) => {
window.Word.run(context => {
// do stuff with context
return context.sync().then(function() {
resolve(someData); // promise will resolve after sync resolves
});
});
});
如果您不需要在之后解决但只想在将来的某个时间同步上下文,您实际上可以这样做并且它不会等待同步:
return new Promise((resolve, reject) => {
window.Word.run(context => {
// do stuff with context
resolve(someData); // this will resolve the promise
return context.sync(); // this will actually still happen since the function never returns
});
});
推荐阅读
- angular - 对象原型可能只是一个对象或空:未定义类型错误:对象原型可能只是一个对象或空:未定义
- javascript - 点击后赛普拉斯加载错误页面
- azure - 通过动态持久卷声明创建 AzureFile 持久卷时,创建的 AzureFile 没有元数据
- elasticsearch - 如何在范围查询 Elasticsearch 中给出时间戳
- azure - 术语“az”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
- c++ - 推送到 std::deque 时如何检测动态内存分配失败?
- javascript - 反应测试onchange dom不更新?
- bash - 在变量中捕获 docker-compose 的输出
- javascript - ReactJS - 从多个 TextField(未知数量)获取数据,然后 setState
- java - 如何使用防止 nullPointerException 的辅助方法使用过滤地图集合