我有一个返回未来的方法:
func getItem(id: String) -> Future<MediaItem, Error> {
return Future { promise in
// alamofire async operation
}
}
Run Code Online (Sandbox Code Playgroud)
我想在另一种方法中使用它并转换MediaItem
为NSImage
,这是一个同步操作。我希望简单地在原始 Future 上做一个map
or flatMap
,但它创建了一个我无法擦除的长 Publisher Future<NSImage, Error>
。
func getImage(id: String) -> Future<NSImage, Error> {
return getItem(id).map { mediaItem in
// some sync operation to convert mediaItem to NSImage
return convertToNSImage(mediaItem) // this returns NSImage
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Cannot convert return expression of type 'Publishers.Map<Future<MediaItem, Error>, NSImage>' to return type 'Future<NSImage, Error>'
我尝试使用flatMap …
我想在这里手动发送值
void processArgs(int argc, char** argv);
Run Code Online (Sandbox Code Playgroud)
如果我像这样发送
char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};
parser->processArgs(2, cwd);
Run Code Online (Sandbox Code Playgroud)
编译器显示警告为
警告:ISO C++ 禁止将字符串常量转换为 'char*' [-Wwrite-strings]
char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};
Run Code Online (Sandbox Code Playgroud) 我有这个不错的菜单,并在单击菜单内的链接时尝试关闭菜单。但是querySelectorAll
我得到了一个错误navLinks.addEventListener
不是一个函数。
当我querySelector
只使用第一个链接时,它正在响应。
我可以去给每个链接另一个类并创建 5 个相同的函数,但我想要 DRY 代码。这样做的正确方法是什么?
const navSlide = () => {
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
const navLinks = document.querySelectorAll('.nav-links li');
burger.addEventListener('click', () => {
// Toggle Nav
nav.classList.toggle('nav-active');
// animate navlinks
navLinks.forEach((link, index) => {
if(link.style.animation) {
link.style.animation = ''
} else {
link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 +0.5}s`;
}
});
// burger animation
burger.classList.toggle('toggle');
});
}
navSlide();
Run Code Online (Sandbox Code Playgroud)
* {
margin: 0px;
padding: 0px; …
Run Code Online (Sandbox Code Playgroud)